home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-04-23 | 76.8 KB | 1,813 lines |
- /*
- * @(#) wonder+.xgi 5.12 91/11/14
- */
- /*
- * @(#) wonder+.xgi 23.2 90/12/13
- *
- * Copyright (C) The Santa Cruz Operation, 1989.
- * This Module contains Proprietary Information of
- * The Santa Cruz Operation, and should be treated as Confidential.
- *
- *
- * Copyright (C) ATI Technologies Inc., 1990
- */
-
- /* *********************************************************************** *
- * ATI/WONDER+.XGI - XEGIA(tm) GrafInfo File for ATI VGAWONDER+ *
- * *
- * LAST UPDATE : APR 23, 1991 by LCC *
- * LAST UPDATE : OCT 17, 1990 by ATI *
- * LAST UPDATE : DEC 13, 1990 by SCO *
- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *
- * ATI.WONDER+.ATIVGA.640x480-16-72 VGA 640x480/16 72HZ *
- * ATI.WONDER+.ATIVGA.800x600-16-56 Super VGA 800x600/16 56HZ *
- * ATI.WONDER+.ATIVGA.800x600-16-60 Super VGA 800x600/16 60HZ *
- * ATI.WONDER+.ATIVGA.800x600-16-72 Super VGA 800x600/16 72HZ *
- * For DEC VRC 16 monitor *
- * ATI.WONDER+.ATIVGA.800x600-256-60 *
- * Next 2 modes are interlaced
- * ATI.WONDER+.ATIVGA.1024x768-16I needs 128k footprint - -5 rev of chip *
- * ATI.WONDER+.ATIVGA.1024x768-16IB Banked (for older revs of the chip *
- * Non interlaced
- * ATI.WONDER+.ATIVGA.1024x768-16 needs 128k footprint - -5 rev of chip *
- * *********************************************************************** */
-
-
- VENDOR ATI "ATI"
- MODEL WONDER+ "VGA WONDER PLUS"
- CLASS ATIVGA "ATI VGA"
- MODE 640x480-16-72 "640x480 16-color 72HZ"
-
- MEMORY(0xA0000,0x10000); /* Basee Address, Length */
- PORT(0x1CE,0x1CF); /* ATI extended register */
- PORT(0x3C2,0x3CA,0x3CC,0x3DA); /* General/External registers */
- PORT(0x3C0,0x3C1); /* Attribute */
- PORT(0x3C7,0x3C8,0x3C9); /* Color registers */
- PORT(0x3C4,0x3C5); /* Sequencer */
- PORT(0x3CE,0x3CF); /* Graphics */
- PORT(0x3D4,0x3D5); /* CRTC */
-
- DATA
- {
- XDRIVER = "mw";
- VISUAL = "PseudoColor";
- DEPTH = 4;
- DEVTYPE = 01;
- DEVTECH = 0x0D; /* VGA */
- PIXBYTES = 80;
- PIXWIDTH = 640;
- PIXHEIGHT = 480;
- PIXRESX = 68;
- PIXRESY = 68;
- PIXBITS = 1;
- PIXPLANES = 4;
- MAPTYPE = "EGA";
- BASEADDRESS = 0xA0000;
- INTERLEAVE = 1;
- INTERSIZE = 80;
- }
-
- PROCEDURE SetGraphics
- {
- in(r63,0x3DA); /* reset attr F/F */
- out(0x3C0,0); /* disable palette */
-
- r0 = 1; r1 = 1; r2 = 0x0F; r3 = 0; r4 = 6;
- bout(5,0x3C4,0x3C5); /* reset, sequencer regs */
- /* select 32.00 MHz */
- out(0x1CE, 0xB9); in(r63, 0x1CF); and(r63, 0xFD);
- out(0x1CE, 0xB9); out(0x1CF, r63);
- out(0x1CE, 0xB8); in(r63, 0x1CF); and(r63, 0x3F);
- out(0x1CE, 0xB8); out(0x1CF, r63);
- out(0x1CE, 0xBE); in(r63, 0x1CF); and(r63, 0xEF);
- out(0x1CE, 0xBE); out(0x1CF, r63);
-
- out(0x3C2,0xE7); /* misc out reg */
- r0=3; bout(1,0x3C4,0x3C5); /* sequencer enable */
-
- out(0x3D4,0x11); out(0x3D5,0); /* unprotect crtc regs 0-7 */
- r0 = 0x65; r1 = 0x4F; r2 = 0x50; r3 = 0x88; /* crtc */
- r4 = 0x55; r5 = 0x9a; r6 = 0x09; r7 = 0x3E;
- r8 = 0x00; r9 = 0x40; r10 = 0x00; r11 = 0x00;
- r12 = 0x00; r13 = 0x00; r14 = 0x00; r15 = 0x00;
- r16 = 0xE8; r17 = 0x9b; r18 = 0xDF; r19 = 0x28;
- r20 = 0x00; r21 = 0xE7; r22 = 0x04; r23 = 0xE3;
- r24 = 0xFF; bout(25,0x3D4,0x3D5);
-
-
- out(0x3CC,0x00); out(0x3CA,0x01); /* graphics controller */
- r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00;
- r4 = 0x00; r5 = 0x00; r6 = 0x05; r7 = 0x0F;
- r8 = 0xFF; bout( 9, 0x3CE, 0x3CF );
-
- in(r63,0x3DA); /* reset attr F/F */
-
- r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03; /* palette */
- r4 = 0x04; r5 = 0x05; r6 = 0x14; r7 = 0x07;
- r8 = 0x38; r9 = 0x39; r10 = 0x3A; r11 = 0x3B;
- r12 = 0x3C; r13 = 0x3D; r14 = 0x3E; r15 = 0x3F;
-
- r16 = 0x01; r17 = 0x00; r18 = 0x0F; r19 = 0x00; /* attr cntlr */
- bout(20,0x3C0,0x3C0);
-
- out(0x3C0,0x20); /* enable palette */
- }
-
-
- PROCEDURE SetText
- {
- in(r63,0x3DA); /* reset attr F/F */
- out(0x3C0,0); /* disable palette */
-
- r0 = 0x01; r1 = 0x00; r2 = 0x03; r3 = 0x00; r4 = 0x02;
- bout(5,0x3C4,0x3C5); /* sequencer regs */
-
- /* select 28.322MHz */
-
- out(0x1CE, 0xB9); in(r63, 0x1CF); or(r63, 0x02);
- out(0x1CE, 0xB9); out(0x1CF, r63);
- out(0x1CE, 0xB8); in(r63, 0x1CF); or(r63, 0x40);
- out(0x1CE, 0xB8); out(0x1CF, r63);
- out(0x1CE, 0xBE); in(r63, 0x1CF); or(r63, 0x10);
- out(0x1CE, 0xBE); out(0x1CF, r63);
-
- out(0x3C2,0x67); /* misc out reg */
- r0=0x03; bout(1,0x3C4,0x3C5); /* sequencer enable */
-
- out(0x3D4,0x11); out(0x3D5,0); /* unprotect crtc regs 0-7 */
- r0 = 0x5F; r1 = 0x4F; r2 = 0x50; r3 = 0x82; /* crtc */
- r4 = 0x55; r5 = 0x81; r6 = 0xBF; r7 = 0x1F;
- r8 = 0x00; r9 = 0x4F; r10 = 0x0D; r11 = 0x0E;
- r12 = 0x00; r13 = 0x00; r14 = 0x00; r15 = 0x00;
- r16 = 0x9C; r17 = 0x8E; r18 = 0x8F; r19 = 0x28;
- r20 = 0x1F; r21 = 0x96; r22 = 0xB9; r23 = 0xA3;
- r24 = 0xFF; bout(25,0x3D4,0x3D5);
-
- out(0x3CC,0x00); out(0x3CA,0x01); /* graphics controller */
- r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00;
- r4 = 0x00; r5 = 0x10; r6 = 0x0E; r7 = 0x00;
- r8 = 0xFF; bout(9,0x3CE,0x3CF);
-
- in(r63,0x3DA); /* reset attr F/F */
-
- r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03; /* palette */
- r4 = 0x04; r5 = 0x05; r6 = 0x14; r7 = 0x07;
- r8 = 0x38; r9 = 0x39; r10 = 0x3A; r11 = 0x3B;
- r12 = 0x3C; r13 = 0x3D; r14 = 0x3E; r15 = 0x3F;
- r16 = 0x0C; r17 = 0x00; r18 = 0x0F; r19 = 0x08; /* attr cntlr */
- bout(20,0x3C0,0x3C0);
-
- out(0x3C0,0x20); /* enable palette */
- }
-
- /* ********************************************************************* */
-
- VENDOR ATI "ATI"
- MODEL WONDER+ "VGA WONDER PLUS"
- CLASS ATIVGA "ATI VGA"
- MODE 800x600-16-56 "800x600 16-color 56HZ"
-
- MEMORY(0xA0000,0x10000); /* Base Address, Length */
- PORT(0x1CE,0x1CF); /* ATI extended register */
- PORT(0x3C2,0x3CA,0x3CC,0x3DA); /* General/External registers */
- PORT(0x3C0,0x3C1); /* Attribute */
- PORT(0x3C7,0x3C8,0x3C9); /* Color registers */
- PORT(0x3C4,0x3C5); /* Sequencer */
- PORT(0x3CE,0x3CF); /* Graphics */
- PORT(0x3D4,0x3D5); /* CRTC */
-
- DATA
- {
- XDRIVER = "mw";
- VISUAL = "PseudoColor";
- DEPTH = 4;
- DEVTYPE = 01;
- DEVTECH = 0x0D; /* VGA */
- PIXBYTES = 100;
- PIXWIDTH = 800;
- PIXHEIGHT = 600;
- PIXRESX = 64;
- PIXRESY = 54;
- PIXBITS = 1;
- PIXPLANES = 4;
- MAPTYPE = "EGA";
- BASEADDRESS = 0xA0000;
- INTERLEAVE = 1;
- INTERSIZE = 80;
- }
-
- PROCEDURE SetGraphics /* ATI mode 0x54 */
- {
-
- /* stop the sequencer and reprogram it */
- r0 = 0x1;
- r1 = 0x1;
- r2 = 0xF;
- r3 = 0x0;
- r4 = 0x86;
- bout(5, 0x3C4, 0x3C5);
-
- /* set ATI extended registers */
-
- /* ATI Reg 0 = XX0XX00X */
- out(0x1CE, 0xB0); in(r63, 0x1CF); and(r63, 0xD9); or(r63, 0x01);
- out(0x1CE, 0xB0); out(0x1CF, r63);
- /* ATI Reg 1 = X0000XXX */
- out(0x1CE, 0xB1); in(r63, 0x1CF); and(r63, 0x87); or(r63, 0x00);
- out(0x1CE, 0xB1); out(0x1CF, r63);
- /* ATI Reg E = XXX10X0X */
- out(0x1CE, 0xBE); in(r63, 0x1CF); and(r63, 0xE5); or(r63, 0x10);
- out(0x1CE, 0xBE); out(0x1CF, r63);
- /* ATI Reg 5 = 0XXXXXXX */
- out(0x1CE, 0xB5); in(r63, 0x1CF); and(r63, 0x7f);
- out(0x1CE, 0xB5); out(0x1CF, r63);
- /* ATI Reg 6 = XXX000X0 */
- out(0x1CE, 0xB6); in(r63, 0x1CF); and(r63, 0xe2);
- out(0x1CE, 0xB6); out(0x1CF, r63);
- /* ATI Reg 8 = 00XXXXXX */
- out(0x1CE, 0xB8); in(r63, 0x1CF); and(r63, 0x3f);
- out(0x1CE, 0xB8); out(0x1CF, r63);
- /* ATI Reg 3 = X0X0XXXX */
- out(0x1CE, 0xB3); in(r63, 0x1CF); and(r63, 0xAF);
- out(0x1CE, 0xB3); out(0x1CF, r63);
- /* ATI Reg 9 = XXXXXX0X */
- out(0x1CE, 0xB9); in(r63, 0x1CF); and(r63, 0xFD);
- out(0x1CE, 0xB9); out(0x1CF, r63);
-
- /* misc output reg */
- out(0x3C2,0x2F);
-
- /* remove sequencer reset */
- r0 = 0x3;
- bout(1,0x3C4,0x3C5);
-
- /* unprotect crtc regs 0-7 */
- out(0x3D4, 0x11); out(0x3D5, 0x00);
-
- /* crtc */
- r0 = 0x7b; r1 = 0x63; r2 = 0x65; r3 = 0x9D;
- r4 = 0x68; r5 = 0x91; r6 = 0x37; r7 = 0x1F;
- r8 = 0; r9 = 0; r10 = 0; r11 = 0;
- r12 = 0; r13 = 0; r14 = 0; r15 = 0;
- r16 = 0x2D; r17 = 0x8E; r18 = 0x2B; r19 = 0x32;
- r20 = 0xF; r21 = 0x32; r22 = 0x34; r23 = 0xE7;
- r24 = 0xFF;
- bout( 25, 0x3d4, 0x3D5 );
-
- /* attribute controller */
- in(r63,0x3DA); /* reset f/f */
-
- /* palette */
- r0 = 00; r1 = 01; r2 = 02; r3 = 03;
- r4 = 04; r5 = 05; r6 = 0x14; r7 = 07;
- r8 = 0x38; r9 = 0x39; r10 = 0x3A; r11 = 0x3B;
- r12 = 0x3C; r13 = 0x3D; r14 = 0x3E; r15 = 0x3F;
- /* attribute controller */
- r16 = 01; r17 = 00; r18 = 0x0F; r19 = 00;
- r20 = 0;
- bout( 21, 0x3C0, 0x3C0 );
-
- /* enable palette */
- out( 0x3C0, 0x20);
-
- /* graphics controller */
- r0 = 0x0;
- r1 = 0x0;
- r2 = 0x0;
- r3 = 0x0;
- r4 = 0x0;
- r5 = 0x0;
- r6 = 0x5;
- r7 = 0xF;
- r8 = 0xFF;
- bout( 9, 0x3CE, 0x3CF );
-
- }
-
- PROCEDURE SetText
- {
-
- /* stop the sequencer and reprogram it */
- r0 = 0x01;
- r1 = 0x00;
- r2 = 0x03;
- r3 = 0x00;
- r4 = 0x02;
- bout( 5, 0x3C4, 0x3C5 );
-
- /* set ATI extended registers */
-
- /* ATI Reg 0 = XX0XX000 */
- out(0x1CE, 0xB0); in(r63, 0x1CF); and(r63, 0xD8);
- out(0x1CE, 0xB0); out(0x1CF, r63);
- /* ATI Reg 1 = X0000XXX */
- out(0x1CE, 0xB1); in(r63, 0x1CF); and(r63, 0x87);
- out(0x1CE, 0xB1); out(0x1CF, r63);
- /* ATI Reg E = XXX10X0X */
- out(0x1CE, 0xBE); in(r63, 0x1CF); and(r63, 0xE5); or(r63, 0x10);
- out(0x1CE, 0xBE); out(0x1CF, r63);
- /* ATI Reg 5 = 0XXXXXXX */
- out(0x1CE, 0xB5); in(r63, 0x1CF); and(r63, 0x7f);
- out(0x1CE, 0xB5); out(0x1CF, r63);
- /* ATI Reg 6 = XXX000X0 */
- out(0x1CE, 0xB6); in(r63, 0x1CF); and(r63, 0xe2);
- out(0x1CE, 0xB6); out(0x1CF, r63);
- /* ATI Reg 8 = 01XXXXXX */
- out(0x1CE, 0xB8); in(r63, 0x1CF); and(r63, 0x3f); or(r63, 0x40);
- out(0x1CE, 0xB8); out(0x1CF, r63);
- /* ATI Reg 3 = X0X0XXXX */
- out(0x1CE, 0xB3); in(r63, 0x1CF); and(r63, 0xAF);
- out(0x1CE, 0xB3); out(0x1CF, r63);
- /* ATI Reg 9 = XXXXXX0X */
- out(0x1CE, 0xB9); in(r63, 0x1CF); and(r63, 0xFD); or(r63, 0x02);
- out(0x1CE, 0xB9); out(0x1CF, r63);
-
-
- out(0x3C2,0x67); /* misc out reg */
-
- r0=0x03; bout(1,0x3C4,0x3C5); /* sequencer enable */
-
- /* unprotect crtc regs 0-7 */
- out(0x3D4, 0x11); out(0x3D5, 0x0E);
-
- r0 = 0x5F; r1 = 0x4F; r2 = 0x50; r3 = 0x82; /* crtc */
- r4 = 0x55; r5 = 0x81; r6 = 0xBF; r7 = 0x1F;
- r8 = 0x00; r9 = 0x4F; r10 = 0x0D; r11 = 0x0E;
- r12 = 0x00; r13 = 0x00; r14 = 0x00; r15 = 0x00;
- r16 = 0x9C; r17 = 0x8E; r18 = 0x8F; r19 = 0x28;
- r20 = 0x0F; r21 = 0x96; r22 = 0xB9; r23 = 0xA3;
- r24 = 0xFF; bout(25,0x3D4,0x3D5);
-
- in(r63,0x3DA); /* reset attr F/F */
-
- r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03; /* palette */
- r4 = 0x04; r5 = 0x05; r6 = 0x14; r7 = 0x07;
- r8 = 0x38; r9 = 0x39; r10 = 0x3A; r11 = 0x3B;
- r12 = 0x3C; r13 = 0x3D; r14 = 0x3E; r15 = 0x3F;
- r16 = 0x0C; r17 = 0x00; r18 = 0x0F; r19 = 0x08; /* attr cntlr */
- bout(20,0x3C0,0x3C0);
-
- out(0x3C0,0x20); /* enable palette */
-
- out(0x3CC,0x00); out(0x3CA,0x01); /* graphics controller */
- r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00;
- r4 = 0x00; r5 = 0x10; r6 = 0x0E; r7 = 0x00;
- r8 = 0xFF; bout(9,0x3CE,0x3CF);
-
- }
-
-
- VENDOR ATI "ATI"
- MODEL WONDER+ "VGA WONDER PLUS"
- CLASS ATIVGA "ATI VGA"
- MODE 800x600-16-60 "800x600 16-color 60HZ"
-
- MEMORY(0xA0000,0x10000); /* Base Address, Length */
- PORT(0x1CE,0x1CF); /* ATI extended register */
- PORT(0x3C2,0x3CA,0x3CC,0x3DA); /* General/External registers */
- PORT(0x3C0,0x3C1); /* Attribute */
- PORT(0x3C7,0x3C8,0x3C9); /* Color registers */
- PORT(0x3C4,0x3C5); /* Sequencer */
- PORT(0x3CE,0x3CF); /* Graphics */
- PORT(0x3D4,0x3D5); /* CRTC */
-
- DATA
- {
- XDRIVER = "mw";
- VISUAL = "PseudoColor";
- DEPTH = 4;
- DEVTYPE = 01;
- DEVTECH = 0x0D; /* VGA */
- PIXBYTES = 100;
- PIXWIDTH = 800;
- PIXHEIGHT = 600;
- PIXRESX = 64;
- PIXRESY = 54;
- PIXBITS = 1;
- PIXPLANES = 4;
- MAPTYPE = "EGA";
- BASEADDRESS = 0xA0000;
- INTERLEAVE = 1;
- INTERSIZE = 80;
- }
-
- PROCEDURE SetGraphics /* ATI mode 0x54 */
- {
-
- /* stop the sequencer and reprogram it */
- r0 = 0x1;
- r1 = 0x1;
- r2 = 0xF;
- r3 = 0x0;
- r4 = 0x86;
- bout(5, 0x3C4, 0x3C5);
-
- /* set ATI extended registers */
-
- /* ATI Reg 0 = XX0XX001 */
- out(0x1CE, 0xB0); in(r63, 0x1CF); and(r63, 0xD9); or( r63, 0x01);
- out(0x1CE, 0xB0); out(0x1CF, r63);
- /* ATI Reg 1 = X0000XXX */
- out(0x1CE, 0xB1); in(r63, 0x1CF); and(r63, 0x87); or(r63, 0x00);
- out(0x1CE, 0xB1); out(0x1CF, r63);
- /* ATI Reg E = XXX10X0X */
- out(0x1CE, 0xBE); in(r63, 0x1CF); and(r63, 0xE5); or(r63, 0x00);
- out(0x1CE, 0xBE); out(0x1CF, r63);
- /* ATI Reg 5 = 0XXXXXXX */
- out(0x1CE, 0xB5); in(r63, 0x1CF); and(r63, 0x7f);
- out(0x1CE, 0xB5); out(0x1CF, r63);
- /* ATI Reg 6 = XXX000X0 */
- out(0x1CE, 0xB6); in(r63, 0x1CF); and(r63, 0xe2);
- out(0x1CE, 0xB6); out(0x1CF, r63);
- /* ATI Reg 8 = 00XXXXXX */
- out(0x1CE, 0xB8); in(r63, 0x1CF); and(r63, 0x3f);
- out(0x1CE, 0xB8); out(0x1CF, r63);
- /* ATI Reg 3 = X0X0XXXX */
- out(0x1CE, 0xB3); in(r63, 0x1CF); and(r63, 0xAF);
- out(0x1CE, 0xB3); out(0x1CF, r63);
- /* ATI Reg 9 = XXXXXX0X */
- out(0x1CE, 0xB9); in(r63, 0x1CF); and(r63, 0xFD); or( r63, 0x02);
- out(0x1CE, 0xB9); out(0x1CF, r63);
-
- /* misc output reg */
- out(0x3C2,0x23);
-
- /* remove sequencer reset */
- r0 = 0x3;
- bout(1,0x3C4,0x3C5);
-
- /* unprotect crtc regs 0-7 */
- out(0x3D4, 0x11); out(0x3D5, 0x00);
-
- /* crtc */
- r0 = 0x7f; r1 = 0x63; r2 = 0x65; r3 = 0x9D;
- r4 = 0x6b; r5 = 0x9c; r6 = 0x38; r7 = 0x1F;
- r8 = 0; r9 = 0; r10 = 0; r11 = 0;
- r12 = 0; r13 = 0; r14 = 0; r15 = 0;
- r16 = 0x2c; r17 = 0x8E; r18 = 0x2B; r19 = 0x32;
- r20 = 0xF; r21 = 0x32; r22 = 0x34; r23 = 0xE7;
- r24 = 0xFF;
- bout( 25, 0x3d4, 0x3D5 );
-
- /* attribute controller */
- in(r63,0x3DA); /* reset f/f */
-
- /* palette */
- r0 = 00; r1 = 01; r2 = 02; r3 = 03;
- r4 = 04; r5 = 05; r6 = 0x14; r7 = 07;
- r8 = 0x38; r9 = 0x39; r10 = 0x3A; r11 = 0x3B;
- r12 = 0x3C; r13 = 0x3D; r14 = 0x3E; r15 = 0x3F;
- /* attribute controller */
- r16 = 01; r17 = 00; r18 = 0x0F; r19 = 00;
- r20 = 0;
- bout( 21, 0x3C0, 0x3C0 );
-
- /* enable palette */
- out( 0x3C0, 0x20);
-
- /* graphics controller */
- r0 = 0x0;
- r1 = 0x0;
- r2 = 0x0;
- r3 = 0x0;
- r4 = 0x0;
- r5 = 0x0;
- r6 = 0x5;
- r7 = 0xF;
- r8 = 0xFF;
- bout( 9, 0x3CE, 0x3CF );
-
- }
-
- PROCEDURE SetText
- {
-
- /* stop the sequencer and reprogram it */
- r0 = 0x01;
- r1 = 0x00;
- r2 = 0x03;
- r3 = 0x00;
- r4 = 0x02;
- bout( 5, 0x3C4, 0x3C5 );
-
- /* set ATI extended registers */
-
- /* ATI Reg 0 = XX0XX000 */
- out(0x1CE, 0xB0); in(r63, 0x1CF); and(r63, 0xD8);
- out(0x1CE, 0xB0); out(0x1CF, r63);
- /* ATI Reg 1 = X0000XXX */
- out(0x1CE, 0xB1); in(r63, 0x1CF); and(r63, 0x87);
- out(0x1CE, 0xB1); out(0x1CF, r63);
- /* ATI Reg E = XXX10X0X */
- out(0x1CE, 0xBE); in(r63, 0x1CF); and(r63, 0xE5); or(r63, 0x10);
- out(0x1CE, 0xBE); out(0x1CF, r63);
- /* ATI Reg 5 = 0XXXXXXX */
- out(0x1CE, 0xB5); in(r63, 0x1CF); and(r63, 0x7f);
- out(0x1CE, 0xB5); out(0x1CF, r63);
- /* ATI Reg 6 = XXX000X0 */
- out(0x1CE, 0xB6); in(r63, 0x1CF); and(r63, 0xe2);
- out(0x1CE, 0xB6); out(0x1CF, r63);
- /* ATI Reg 8 = 01XXXXXX */
- out(0x1CE, 0xB8); in(r63, 0x1CF); and(r63, 0x3f); or(r63, 0x40);
- out(0x1CE, 0xB8); out(0x1CF, r63);
- /* ATI Reg 3 = X0X0XXXX */
- out(0x1CE, 0xB3); in(r63, 0x1CF); and(r63, 0xAF);
- out(0x1CE, 0xB3); out(0x1CF, r63);
- /* ATI Reg 9 = XXXXXX0X */
- out(0x1CE, 0xB9); in(r63, 0x1CF); and(r63, 0xFD); or(r63, 0x02);
- out(0x1CE, 0xB9); out(0x1CF, r63);
-
-
- out(0x3C2,0x67); /* misc out reg */
-
- r0=0x03; bout(1,0x3C4,0x3C5); /* sequencer enable */
-
- /* unprotect crtc regs 0-7 */
- out(0x3D4, 0x11); out(0x3D5, 0x0E);
-
- r0 = 0x5F; r1 = 0x4F; r2 = 0x50; r3 = 0x82; /* crtc */
- r4 = 0x55; r5 = 0x81; r6 = 0xBF; r7 = 0x1F;
- r8 = 0x00; r9 = 0x4F; r10 = 0x0D; r11 = 0x0E;
- r12 = 0x00; r13 = 0x00; r14 = 0x00; r15 = 0x00;
- r16 = 0x9C; r17 = 0x8E; r18 = 0x8F; r19 = 0x28;
- r20 = 0x0F; r21 = 0x96; r22 = 0xB9; r23 = 0xA3;
- r24 = 0xFF; bout(25,0x3D4,0x3D5);
-
- in(r63,0x3DA); /* reset attr F/F */
-
- r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03; /* palette */
- r4 = 0x04; r5 = 0x05; r6 = 0x14; r7 = 0x07;
- r8 = 0x38; r9 = 0x39; r10 = 0x3A; r11 = 0x3B;
- r12 = 0x3C; r13 = 0x3D; r14 = 0x3E; r15 = 0x3F;
- r16 = 0x0C; r17 = 0x00; r18 = 0x0F; r19 = 0x08; /* attr cntlr */
- bout(20,0x3C0,0x3C0);
-
- out(0x3C0,0x20); /* enable palette */
-
- out(0x3CC,0x00); out(0x3CA,0x01); /* graphics controller */
- r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00;
- r4 = 0x00; r5 = 0x10; r6 = 0x0E; r7 = 0x00;
- r8 = 0xFF; bout(9,0x3CE,0x3CF);
-
- }
-
-
- VENDOR ATI "ATI"
- MODEL WONDER+ "VGA WONDER PLUS"
- CLASS ATIVGA "ATI VGA"
- MODE 800x600-16-72 "800x600 16-color 72HZ (DEC VRC16)"
-
- MEMORY(0xA0000,0x10000); /* Base Address, Length */
- PORT(0x1CE,0x1CF); /* ATI extended register */
- PORT(0x3C2,0x3CA,0x3CC,0x3DA); /* General/External registers */
- PORT(0x3C0,0x3C1); /* Attribute */
- PORT(0x3C7,0x3C8,0x3C9); /* Color registers */
- PORT(0x3C4,0x3C5); /* Sequencer */
- PORT(0x3CE,0x3CF); /* Graphics */
- PORT(0x3D4,0x3D5); /* CRTC */
-
- DATA
- {
- XDRIVER = "mw";
- VISUAL = "PseudoColor";
- DEPTH = 4;
- DEVTYPE = 01;
- DEVTECH = 0x0D; /* VGA */
- PIXBYTES = 100;
- PIXWIDTH = 800;
- PIXHEIGHT = 600;
- PIXRESX = 64;
- PIXRESY = 54;
- PIXBITS = 1;
- PIXPLANES = 4;
- MAPTYPE = "EGA";
- BASEADDRESS = 0xA0000;
- INTERLEAVE = 1;
- INTERSIZE = 80;
- }
-
- PROCEDURE SetGraphics /* ATI mode 0x54 */
- {
-
- /* stop the sequencer and reprogram it */
- r0 = 0x1;
- r1 = 0x1;
- r2 = 0xF;
- r3 = 0x0;
- r4 = 0x86;
- bout(5, 0x3C4, 0x3C5);
-
- /* set ATI extended registers */
-
- /* ATI Reg 0 = XX0XX001 */
- out(0x1CE, 0xB0); in(r63, 0x1CF); and(r63, 0xD9); or(r63, 0x01);
- out(0x1CE, 0xB0); out(0x1CF, r63);
- /* ATI Reg 1 = X0000XXX */ /* might need to be 0x40 */
- out(0x1CE, 0xB1); in(r63, 0x1CF); and(r63, 0x87); or(r63, 0x00);
- out(0x1CE, 0xB1); out(0x1CF, r63);
- /* ATI Reg E = XXX10X0X */
- out(0x1CE, 0xBE); in(r63, 0x1CF); and(r63, 0xE5); or(r63, 0x10);
- out(0x1CE, 0xBE); out(0x1CF, r63);
- /* ATI Reg 5 = 0XXXXXXX */
- out(0x1CE, 0xB5); in(r63, 0x1CF); and(r63, 0x7f);
- out(0x1CE, 0xB5); out(0x1CF, r63);
- /* ATI Reg 6 = XXX000X0 */
- out(0x1CE, 0xB6); in(r63, 0x1CF); and(r63, 0xe2);
- out(0x1CE, 0xB6); out(0x1CF, r63);
- /* ATI Reg 8 = 00XXXXXX */
- out(0x1CE, 0xB8); in(r63, 0x1CF); and(r63, 0x3f);
- out(0x1CE, 0xB8); out(0x1CF, r63);
- /* ATI Reg 3 = X0X0XXXX */
- out(0x1CE, 0xB3); in(r63, 0x1CF); and(r63, 0xAF);
- out(0x1CE, 0xB3); out(0x1CF, r63);
- /* ATI Reg 9 = XXXXXX0X */
- out(0x1CE, 0xB9); in(r63, 0x1CF); and(r63, 0xFD);
- out(0x1CE, 0xB9); out(0x1CF, r63);
-
- /* misc output reg */
- out(0x3C2,0x27);
-
- /* remove sequencer reset */
- r0 = 0x3;
- bout(1,0x3C4,0x3C5);
-
- /* unprotect crtc regs 0-7 */
- out(0x3D4, 0x11); out(0x3D5, 0x00);
-
- /* crtc */
- r0 = 0x7e; r1 = 0x63; r2 = 0x65; r3 = 0x9D;
- r4 = 0x6c; r5 = 0x9b; r6 = 0x4b; r7 = 0x1F;
- r8 = 0; r9 = 0; r10 = 0; r11 = 0;
- r12 = 0; r13 = 0; r14 = 0; r15 = 0;
- r16 = 0x3D; r17 = 0x80; r18 = 0x2B; r19 = 0x32;
- r20 = 0xF; r21 = 0x33; r22 = 0x36; r23 = 0xE7;
- r24 = 0xFF;
- bout( 25, 0x3d4, 0x3D5 );
-
- /* attribute controller */
- in(r63,0x3DA); /* reset f/f */
-
- /* palette */
- r0 = 00; r1 = 01; r2 = 02; r3 = 03;
- r4 = 04; r5 = 05; r6 = 0x14; r7 = 07;
- r8 = 0x38; r9 = 0x39; r10 = 0x3A; r11 = 0x3B;
- r12 = 0x3C; r13 = 0x3D; r14 = 0x3E; r15 = 0x3F;
- /* attribute controller */
- r16 = 01; r17 = 00; r18 = 0x0F; r19 = 00;
- r20 = 0;
- bout( 21, 0x3C0, 0x3C0 );
-
- /* enable palette */
- out( 0x3C0, 0x20);
-
- /* graphics controller */
- r0 = 0x0;
- r1 = 0x0;
- r2 = 0x0;
- r3 = 0x0;
- r4 = 0x0;
- r5 = 0x0;
- r6 = 0x5;
- r7 = 0xF;
- r8 = 0xFF;
- bout( 9, 0x3CE, 0x3CF );
-
- }
-
- PROCEDURE SetText
- {
-
- /* stop the sequencer and reprogram it */
- r0 = 0x01;
- r1 = 0x00;
- r2 = 0x03;
- r3 = 0x00;
- r4 = 0x02;
- bout( 5, 0x3C4, 0x3C5 );
-
- /* set ATI extended registers Plus */
-
- /* ATI Reg 0 = XX0XX000 */
- out(0x1CE, 0xB0); in(r63, 0x1CF); and(r63, 0xD8);
- out(0x1CE, 0xB0); out(0x1CF, r63);
- /* ATI Reg 1 = X0000XXX */
- out(0x1CE, 0xB1); in(r63, 0x1CF); and(r63, 0x87);
- out(0x1CE, 0xB1); out(0x1CF, r63);
- /* ATI Reg E = XXX10X0X */
- out(0x1CE, 0xBE); in(r63, 0x1CF); and(r63, 0xE5); or(r63, 0x10);
- out(0x1CE, 0xBE); out(0x1CF, r63);
- /* ATI Reg 5 = 0XXXXXXX */
- out(0x1CE, 0xB5); in(r63, 0x1CF); and(r63, 0x7f);
- out(0x1CE, 0xB5); out(0x1CF, r63);
- /* ATI Reg 6 = XXX000X0 */
- out(0x1CE, 0xB6); in(r63, 0x1CF); and(r63, 0xe2);
- out(0x1CE, 0xB6); out(0x1CF, r63);
- /* ATI Reg 8 = 01XXXXXX */
- out(0x1CE, 0xB8); in(r63, 0x1CF); and(r63, 0x3f); or(r63, 0x40);
- out(0x1CE, 0xB8); out(0x1CF, r63);
- /* ATI Reg 3 = X0X0XXXX */
- out(0x1CE, 0xB3); in(r63, 0x1CF); and(r63, 0xAF);
- out(0x1CE, 0xB3); out(0x1CF, r63);
- /* ATI Reg 9 = XXXXXX0X */
- out(0x1CE, 0xB9); in(r63, 0x1CF); and(r63, 0xFD); or(r63, 0x02);
- out(0x1CE, 0xB9); out(0x1CF, r63);
-
-
- out(0x3C2,0x67); /* misc out reg */
-
- r0=0x03; bout(1,0x3C4,0x3C5); /* sequencer enable */
-
- /* unprotect crtc regs 0-7 */
- out(0x3D4, 0x11); out(0x3D5, 0x0E);
-
- r0 = 0x5F; r1 = 0x4F; r2 = 0x50; r3 = 0x82; /* crtc */
- r4 = 0x55; r5 = 0x81; r6 = 0xBF; r7 = 0x1F;
- r8 = 0x00; r9 = 0x4F; r10 = 0x0D; r11 = 0x0E;
- r12 = 0x00; r13 = 0x00; r14 = 0x00; r15 = 0x00;
- r16 = 0x9C; r17 = 0x8E; r18 = 0x8F; r19 = 0x28;
- r20 = 0x0F; r21 = 0x96; r22 = 0xB9; r23 = 0xA3;
- r24 = 0xFF; bout(25,0x3D4,0x3D5);
-
- in(r63,0x3DA); /* reset attr F/F */
-
- r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03; /* palette */
- r4 = 0x04; r5 = 0x05; r6 = 0x14; r7 = 0x07;
- r8 = 0x38; r9 = 0x39; r10 = 0x3A; r11 = 0x3B;
- r12 = 0x3C; r13 = 0x3D; r14 = 0x3E; r15 = 0x3F;
- r16 = 0x0C; r17 = 0x00; r18 = 0x0F; r19 = 0x08; /* attr cntlr */
- bout(20,0x3C0,0x3C0);
-
- out(0x3C0,0x20); /* enable palette */
-
- out(0x3CC,0x00); out(0x3CA,0x01); /* graphics controller */
- r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00;
- r4 = 0x00; r5 = 0x10; r6 = 0x0E; r7 = 0x00;
- r8 = 0xFF; bout(9,0x3CE,0x3CF);
-
- }
-
-
- /*
- Derived from mode 800x600-16-60 and:
- Programmer's Reference Manual for the VGAWONDER
- */
- VENDOR ATI "ATI"
- MODEL WONDER+ "VGA WONDER PLUS"
- CLASS ATIVGA "ATI VGA"
- MODE 800x600-256-60 "800x600 256-color 60HZ"
-
- MEMORY(0xA0000,0x10000); /* Base Address, Length */
- PORT(0x1CE,0x1CF); /* ATI extended register */
- PORT(0x3C2,0x3CA,0x3CC,0x3DA); /* General/External registers */
- PORT(0x3C0,0x3C1); /* Attribute */
- PORT(0x3C7,0x3C8,0x3C9); /* Color registers */
- PORT(0x3C4,0x3C5); /* Sequencer */
- PORT(0x3CE,0x3CF); /* Graphics */
- PORT(0x3D4,0x3D5); /* CRTC */
-
- DATA
- {
- XDRIVER = "mw";
- VISUAL = "PseudoColor";
- DEPTH = 8;
- DEVTYPE = 01; /* devEGA */
- DEVTECH = 0x1A; /* dt8Bit_V */
- PIXBYTES = 800;
- PIXWIDTH = 800;
- PIXHEIGHT = 600;
- PIXRESX = 64;
- PIXRESY = 54;
- PIXBITS = 8;
- PIXPLANES = 1;
- MAPTYPE = "ATIWonder+800x600x256";
- BASEADDRESS = 0xA0000;
- INTERLEAVE = 1;
- INTERSIZE = 800;
- }
-
- PROCEDURE SetGraphics /* ATI mode 0x63 */
- {
- in(r63,0x3DA); /* reset attr F/F */
- out(0x3C0,0); /* disable palette */
-
- /* stop the sequencer and reprogram it */
-
- r0 = 0x1; r1 = 0x1; r2 = 0x0f; r3 = 0x0; r4 = 0x8e;
- bout(5, 0x3C4, 0x3C5);
-
- /* set ATI extended registers */
-
- /* ATI Reg 0 = XX1XXXX1 */
- out(0x1ce, 0xb0); in(r63, 0x1cf); and(r63, 0xde); or(r63, 0x21); shl(r63, 8); or(r63, 0xb0); outw(0x1ce, r63);
- /* ATI Reg 1 = XXXXXX0X */
- out(0x1ce, 0xb1); in(r63, 0x1cf); and(r63, 0xfd); or(r63, 0x00); shl(r63, 8); or(r63, 0xb1); outw(0x1ce, r63);
- /* ATI Reg 2 = 00000000 (Select RO/WO page 0 */
- out(0x1ce, 0xb2); in(r63, 0x1cf); and(r63, 0x00); or(r63, 0x00); shl(r63, 8); or(r63, 0xb2); outw(0x1ce, r63);
- /* ATI Reg E = XXX11XXX (Enable Dual-Page) */
- out(0x1ce, 0xbe); in(r63, 0x1cf); and(r63, 0xe7); or(r63, 0x18); shl(r63, 8); or(r63, 0xbe); outw(0x1ce, r63);
- /* ATI Reg 5 = XXXXXXXX */
- out(0x1ce, 0xb5); in(r63, 0x1cf); and(r63, 0xff); or(r63, 0x00); shl(r63, 8); or(r63, 0xb5); outw(0x1ce, r63);
- /* ATI Reg 6 = XXXXX1XX */
- out(0x1ce, 0xb6); in(r63, 0x1cf); and(r63, 0xfb); or(r63, 0x04); shl(r63, 8); or(r63, 0xb6); outw(0x1ce, r63);
- /* ATI Reg 8 = 00XXXXXX */
- out(0x1ce, 0xb8); in(r63, 0x1cf); and(r63, 0x3f); or(r63, 0x00); shl(r63, 8); or(r63, 0xb8); outw(0x1ce, r63);
- /* ATI Reg 3 = XXX0XXXX */
- out(0x1ce, 0xb3); in(r63, 0x1cf); and(r63, 0xef); or(r63, 0x00); shl(r63, 8); or(r63, 0xb3); outw(0x1ce, r63);
- /* ATI Reg 9 = XXXXXX0X */
- out(0x1ce, 0xb9); in(r63, 0x1cf); and(r63, 0xfd); or(r63, 0x00); shl(r63, 8); or(r63, 0xb9); outw(0x1ce, r63);
-
- /* misc output reg */
- out(0x3C2,0xef);
-
- /* remove sequencer reset */
- r0 = 0x3;
- bout(1,0x3C4,0x3C5);
-
- /* unprotect crtc regs 0-7 */
- out(0x3D4, 0x11); out(0x3D5, 0x00);
-
- /* crtc */
- r0 = 0x7a; r1 = 0x63; r2 = 0x65; r3 = 0x9d;
- r4 = 0x67; r5 = 0x92; r6 = 0x38; r7 = 0x1f;
- r8 = 0x00; r9 = 0x0; r10 = 0x00; r11 = 0x00;
- r12 = 0x00; r13 = 0x00; r14 = 0x00; r15 = 0x00;
- r16 = 0x2d; r17 = 0x8e; r18 = 0x2b; r19 = 0x32;
- r20 = 0xf; r21 = 0x32; r22 = 0x34; r23 = 0xe7;
- r24 = 0xff;
- bout( 25, 0x3d4, 0x3D5 );
-
- /* attribute controller */
- in(r63,0x3DA); /* reset f/f */
-
- /* palette */
- r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03;
- r4 = 0x04; r5 = 0x05; r6 = 0x06; r7 = 0x07;
- r8 = 0x08; r9 = 0x09; r10 = 0x0a; r11 = 0x0b;
- r12 = 0x0c; r13 = 0x0d; r14 = 0x0e; r15 = 0x0f;
- /* attribute controller */
- r16 = 0x01; r17 = 0x00; r18 = 0x0F; r19 = 0x00; r20 = 0;
- bout( 21, 0x3C0, 0x3C0 );
-
- /* vvvvvvvvvv program default pallettes vvvvvvvvvv */
- out(0x3C8, 0); out(0x3C9, 0); out(0x3C9, 0); out(0x3C9, 0);
- out(0x3C8, 1); out(0x3C9, 0); out(0x3C9, 0); out(0x3C9, 42);
- out(0x3C8, 2); out(0x3C9, 0); out(0x3C9, 42); out(0x3C9, 0);
- out(0x3C8, 3); out(0x3C9, 0); out(0x3C9, 42); out(0x3C9, 42);
- out(0x3C8, 4); out(0x3C9, 42); out(0x3C9, 0); out(0x3C9, 0);
- out(0x3C8, 5); out(0x3C9, 42); out(0x3C9, 0); out(0x3C9, 42);
- out(0x3C8, 6); out(0x3C9, 42); out(0x3C9, 21); out(0x3C9, 0);
- out(0x3C8, 7); out(0x3C9, 42); out(0x3C9, 42); out(0x3C9, 42);
- out(0x3C8, 8); out(0x3C9, 21); out(0x3C9, 21); out(0x3C9, 21);
- out(0x3C8, 9); out(0x3C9, 21); out(0x3C9, 21); out(0x3C9, 63);
- out(0x3C8, 10); out(0x3C9, 21); out(0x3C9, 63); out(0x3C9, 21);
- out(0x3C8, 11); out(0x3C9, 21); out(0x3C9, 63); out(0x3C9, 63);
- out(0x3C8, 12); out(0x3C9, 63); out(0x3C9, 21); out(0x3C9, 21);
- out(0x3C8, 13); out(0x3C9, 63); out(0x3C9, 21); out(0x3C9, 63);
- out(0x3C8, 14); out(0x3C9, 21); out(0x3C9, 63); out(0x3C9, 21);
- out(0x3C8, 15); out(0x3C9, 63); out(0x3C9, 63); out(0x3C9, 63);
- out(0x3C8, 16); out(0x3C9, 0); out(0x3C9, 0); out(0x3C9, 0);
- out(0x3C8, 17); out(0x3C9, 5); out(0x3C9, 5); out(0x3C9, 5);
- out(0x3C8, 18); out(0x3C9, 8); out(0x3C9, 8); out(0x3C9, 8);
- out(0x3C8, 19); out(0x3C9, 11); out(0x3C9, 11); out(0x3C9, 11);
- out(0x3C8, 20); out(0x3C9, 14); out(0x3C9, 14); out(0x3C9, 14);
- out(0x3C8, 21); out(0x3C9, 17); out(0x3C9, 17); out(0x3C9, 17);
- out(0x3C8, 22); out(0x3C9, 20); out(0x3C9, 20); out(0x3C9, 20);
- out(0x3C8, 23); out(0x3C9, 24); out(0x3C9, 24); out(0x3C9, 24);
- out(0x3C8, 24); out(0x3C9, 28); out(0x3C9, 28); out(0x3C9, 28);
- out(0x3C8, 25); out(0x3C9, 32); out(0x3C9, 32); out(0x3C9, 32);
- out(0x3C8, 26); out(0x3C9, 36); out(0x3C9, 36); out(0x3C9, 36);
- out(0x3C8, 27); out(0x3C9, 40); out(0x3C9, 40); out(0x3C9, 40);
- out(0x3C8, 28); out(0x3C9, 45); out(0x3C9, 45); out(0x3C9, 45);
- out(0x3C8, 29); out(0x3C9, 50); out(0x3C9, 50); out(0x3C9, 50);
- out(0x3C8, 30); out(0x3C9, 56); out(0x3C9, 56); out(0x3C9, 56);
- out(0x3C8, 31); out(0x3C9, 63); out(0x3C9, 63); out(0x3C9, 63);
- out(0x3C8, 32); out(0x3C9, 0); out(0x3C9, 0); out(0x3C9, 63);
- out(0x3C8, 33); out(0x3C9, 16); out(0x3C9, 0); out(0x3C9, 63);
- out(0x3C8, 34); out(0x3C9, 31); out(0x3C9, 0); out(0x3C9, 63);
- out(0x3C8, 35); out(0x3C9, 47); out(0x3C9, 0); out(0x3C9, 63);
- out(0x3C8, 36); out(0x3C9, 63); out(0x3C9, 0); out(0x3C9, 63);
- out(0x3C8, 37); out(0x3C9, 63); out(0x3C9, 0); out(0x3C9, 47);
- out(0x3C8, 38); out(0x3C9, 63); out(0x3C9, 0); out(0x3C9, 31);
- out(0x3C8, 39); out(0x3C9, 63); out(0x3C9, 0); out(0x3C9, 16);
- out(0x3C8, 40); out(0x3C9, 63); out(0x3C9, 0); out(0x3C9, 0);
- out(0x3C8, 41); out(0x3C9, 63); out(0x3C9, 16); out(0x3C9, 0);
- out(0x3C8, 42); out(0x3C9, 63); out(0x3C9, 31); out(0x3C9, 0);
- out(0x3C8, 43); out(0x3C9, 63); out(0x3C9, 47); out(0x3C9, 0);
- out(0x3C8, 44); out(0x3C9, 63); out(0x3C9, 63); out(0x3C9, 0);
- out(0x3C8, 45); out(0x3C9, 47); out(0x3C9, 63); out(0x3C9, 0);
- out(0x3C8, 46); out(0x3C9, 31); out(0x3C9, 63); out(0x3C9, 0);
- out(0x3C8, 47); out(0x3C9, 16); out(0x3C9, 63); out(0x3C9, 0);
- out(0x3C8, 48); out(0x3C9, 0); out(0x3C9, 63); out(0x3C9, 0);
- out(0x3C8, 49); out(0x3C9, 0); out(0x3C9, 63); out(0x3C9, 16);
- out(0x3C8, 50); out(0x3C9, 0); out(0x3C9, 63); out(0x3C9, 31);
- out(0x3C8, 51); out(0x3C9, 0); out(0x3C9, 63); out(0x3C9, 47);
- out(0x3C8, 52); out(0x3C9, 0); out(0x3C9, 63); out(0x3C9, 63);
- out(0x3C8, 53); out(0x3C9, 0); out(0x3C9, 47); out(0x3C9, 63);
- out(0x3C8, 54); out(0x3C9, 0); out(0x3C9, 31); out(0x3C9, 63);
- out(0x3C8, 55); out(0x3C9, 0); out(0x3C9, 16); out(0x3C9, 63);
- out(0x3C8, 56); out(0x3C9, 31); out(0x3C9, 31); out(0x3C9, 63);
- out(0x3C8, 57); out(0x3C9, 39); out(0x3C9, 31); out(0x3C9, 63);
- out(0x3C8, 58); out(0x3C9, 47); out(0x3C9, 31); out(0x3C9, 63);
- out(0x3C8, 59); out(0x3C9, 55); out(0x3C9, 31); out(0x3C9, 63);
- out(0x3C8, 60); out(0x3C9, 63); out(0x3C9, 31); out(0x3C9, 63);
- out(0x3C8, 61); out(0x3C9, 63); out(0x3C9, 31); out(0x3C9, 55);
- out(0x3C8, 62); out(0x3C9, 63); out(0x3C9, 31); out(0x3C9, 47);
- out(0x3C8, 63); out(0x3C9, 63); out(0x3C9, 31); out(0x3C9, 39);
- out(0x3C8, 64); out(0x3C9, 63); out(0x3C9, 31); out(0x3C9, 31);
- out(0x3C8, 65); out(0x3C9, 63); out(0x3C9, 39); out(0x3C9, 31);
- out(0x3C8, 66); out(0x3C9, 63); out(0x3C9, 47); out(0x3C9, 31);
- out(0x3C8, 67); out(0x3C9, 63); out(0x3C9, 55); out(0x3C9, 31);
- out(0x3C8, 68); out(0x3C9, 63); out(0x3C9, 63); out(0x3C9, 31);
- out(0x3C8, 69); out(0x3C9, 55); out(0x3C9, 63); out(0x3C9, 31);
- out(0x3C8, 70); out(0x3C9, 47); out(0x3C9, 63); out(0x3C9, 31);
- out(0x3C8, 71); out(0x3C9, 39); out(0x3C9, 63); out(0x3C9, 31);
- out(0x3C8, 72); out(0x3C9, 31); out(0x3C9, 63); out(0x3C9, 31);
- out(0x3C8, 73); out(0x3C9, 31); out(0x3C9, 63); out(0x3C9, 39);
- out(0x3C8, 74); out(0x3C9, 31); out(0x3C9, 63); out(0x3C9, 47);
- out(0x3C8, 75); out(0x3C9, 31); out(0x3C9, 63); out(0x3C9, 55);
- out(0x3C8, 76); out(0x3C9, 31); out(0x3C9, 63); out(0x3C9, 63);
- out(0x3C8, 77); out(0x3C9, 31); out(0x3C9, 55); out(0x3C9, 63);
- out(0x3C8, 78); out(0x3C9, 31); out(0x3C9, 47); out(0x3C9, 63);
- out(0x3C8, 79); out(0x3C9, 31); out(0x3C9, 39); out(0x3C9, 63);
- out(0x3C8, 80); out(0x3C9, 45); out(0x3C9, 45); out(0x3C9, 63);
- out(0x3C8, 81); out(0x3C9, 49); out(0x3C9, 45); out(0x3C9, 63);
- out(0x3C8, 82); out(0x3C9, 54); out(0x3C9, 45); out(0x3C9, 63);
- out(0x3C8, 83); out(0x3C9, 48); out(0x3C9, 45); out(0x3C9, 63);
- out(0x3C8, 84); out(0x3C9, 43); out(0x3C9, 45); out(0x3C9, 63);
- out(0x3C8, 85); out(0x3C9, 43); out(0x3C9, 45); out(0x3C9, 58);
- out(0x3C8, 86); out(0x3C9, 43); out(0x3C9, 45); out(0x3C9, 54);
- out(0x3C8, 87); out(0x3C9, 43); out(0x3C9, 45); out(0x3C9, 49);
- out(0x3C8, 88); out(0x3C9, 63); out(0x3C9, 45); out(0x3C9, 45);
- out(0x3C8, 89); out(0x3C9, 63); out(0x3C9, 49); out(0x3C9, 45);
- out(0x3C8, 90); out(0x3C9, 63); out(0x3C9, 54); out(0x3C9, 45);
- out(0x3C8, 91); out(0x3C9, 63); out(0x3C9, 58); out(0x3C9, 45);
- out(0x3C8, 92); out(0x3C9, 63); out(0x3C9, 63); out(0x3C9, 45);
- out(0x3C8, 93); out(0x3C9, 58); out(0x3C9, 63); out(0x3C9, 45);
- out(0x3C8, 94); out(0x3C9, 54); out(0x3C9, 63); out(0x3C9, 45);
- out(0x3C8, 95); out(0x3C9, 49); out(0x3C9, 63); out(0x3C9, 45);
- out(0x3C8, 96); out(0x3C9, 45); out(0x3C9, 63); out(0x3C9, 45);
- out(0x3C8, 97); out(0x3C9, 45); out(0x3C9, 63); out(0x3C9, 49);
- out(0x3C8, 98); out(0x3C9, 45); out(0x3C9, 63); out(0x3C9, 54);
- out(0x3C8, 99); out(0x3C9, 45); out(0x3C9, 63); out(0x3C9, 58);
- out(0x3C8, 100); out(0x3C9, 45); out(0x3C9, 63); out(0x3C9, 63);
- out(0x3C8, 101); out(0x3C9, 45); out(0x3C9, 58); out(0x3C9, 63);
- out(0x3C8, 102); out(0x3C9, 45); out(0x3C9, 54); out(0x3C9, 63);
- out(0x3C8, 103); out(0x3C9, 45); out(0x3C9, 49); out(0x3C9, 63);
- out(0x3C8, 104); out(0x3C9, 0); out(0x3C9, 0); out(0x3C9, 28);
- out(0x3C8, 105); out(0x3C9, 7); out(0x3C9, 0); out(0x3C9, 28);
- out(0x3C8, 106); out(0x3C9, 14); out(0x3C9, 0); out(0x3C9, 28);
- out(0x3C8, 107); out(0x3C9, 21); out(0x3C9, 0); out(0x3C9, 28);
- out(0x3C8, 108); out(0x3C9, 28); out(0x3C9, 0); out(0x3C9, 28);
- out(0x3C8, 109); out(0x3C9, 28); out(0x3C9, 0); out(0x3C9, 21);
- out(0x3C8, 110); out(0x3C9, 28); out(0x3C9, 0); out(0x3C9, 14);
- out(0x3C8, 111); out(0x3C9, 28); out(0x3C9, 0); out(0x3C9, 7);
- out(0x3C8, 112); out(0x3C9, 28); out(0x3C9, 0); out(0x3C9, 0);
- out(0x3C8, 113); out(0x3C9, 28); out(0x3C9, 7); out(0x3C9, 0);
- out(0x3C8, 114); out(0x3C9, 28); out(0x3C9, 14); out(0x3C9, 0);
- out(0x3C8, 115); out(0x3C9, 28); out(0x3C9, 21); out(0x3C9, 0);
- out(0x3C8, 116); out(0x3C9, 28); out(0x3C9, 28); out(0x3C9, 0);
- out(0x3C8, 117); out(0x3C9, 21); out(0x3C9, 28); out(0x3C9, 0);
- out(0x3C8, 118); out(0x3C9, 14); out(0x3C9, 28); out(0x3C9, 0);
- out(0x3C8, 119); out(0x3C9, 7); out(0x3C9, 28); out(0x3C9, 0);
- out(0x3C8, 120); out(0x3C9, 0); out(0x3C9, 28); out(0x3C9, 0);
- out(0x3C8, 121); out(0x3C9, 0); out(0x3C9, 28); out(0x3C9, 7);
- out(0x3C8, 122); out(0x3C9, 0); out(0x3C9, 28); out(0x3C9, 14);
- out(0x3C8, 123); out(0x3C9, 0); out(0x3C9, 28); out(0x3C9, 21);
- out(0x3C8, 124); out(0x3C9, 0); out(0x3C9, 28); out(0x3C9, 28);
- out(0x3C8, 125); out(0x3C9, 0); out(0x3C9, 21); out(0x3C9, 28);
- out(0x3C8, 126); out(0x3C9, 0); out(0x3C9, 14); out(0x3C9, 28);
- out(0x3C8, 127); out(0x3C9, 0); out(0x3C9, 7); out(0x3C9, 28);
- out(0x3C8, 128); out(0x3C9, 14); out(0x3C9, 14); out(0x3C9, 28);
- out(0x3C8, 129); out(0x3C9, 17); out(0x3C9, 14); out(0x3C9, 28);
- out(0x3C8, 130); out(0x3C9, 21); out(0x3C9, 14); out(0x3C9, 28);
- out(0x3C8, 131); out(0x3C9, 24); out(0x3C9, 14); out(0x3C9, 28);
- out(0x3C8, 132); out(0x3C9, 28); out(0x3C9, 14); out(0x3C9, 28);
- out(0x3C8, 133); out(0x3C9, 28); out(0x3C9, 14); out(0x3C9, 24);
- out(0x3C8, 134); out(0x3C9, 28); out(0x3C9, 14); out(0x3C9, 21);
- out(0x3C8, 135); out(0x3C9, 28); out(0x3C9, 14); out(0x3C9, 17);
- out(0x3C8, 136); out(0x3C9, 28); out(0x3C9, 14); out(0x3C9, 14);
- out(0x3C8, 137); out(0x3C9, 28); out(0x3C9, 17); out(0x3C9, 14);
- out(0x3C8, 138); out(0x3C9, 28); out(0x3C9, 21); out(0x3C9, 14);
- out(0x3C8, 139); out(0x3C9, 28); out(0x3C9, 24); out(0x3C9, 14);
- out(0x3C8, 140); out(0x3C9, 28); out(0x3C9, 28); out(0x3C9, 14);
- out(0x3C8, 141); out(0x3C9, 24); out(0x3C9, 28); out(0x3C9, 14);
- out(0x3C8, 142); out(0x3C9, 21); out(0x3C9, 28); out(0x3C9, 14);
- out(0x3C8, 143); out(0x3C9, 17); out(0x3C9, 28); out(0x3C9, 14);
- out(0x3C8, 144); out(0x3C9, 14); out(0x3C9, 28); out(0x3C9, 14);
- out(0x3C8, 145); out(0x3C9, 14); out(0x3C9, 28); out(0x3C9, 17);
- out(0x3C8, 146); out(0x3C9, 14); out(0x3C9, 28); out(0x3C9, 21);
- out(0x3C8, 147); out(0x3C9, 14); out(0x3C9, 28); out(0x3C9, 24);
- out(0x3C8, 148); out(0x3C9, 14); out(0x3C9, 28); out(0x3C9, 28);
- out(0x3C8, 149); out(0x3C9, 14); out(0x3C9, 24); out(0x3C9, 28);
- out(0x3C8, 150); out(0x3C9, 14); out(0x3C9, 21); out(0x3C9, 28);
- out(0x3C8, 151); out(0x3C9, 14); out(0x3C9, 17); out(0x3C9, 28);
- out(0x3C8, 152); out(0x3C9, 20); out(0x3C9, 20); out(0x3C9, 28);
- out(0x3C8, 153); out(0x3C9, 22); out(0x3C9, 20); out(0x3C9, 28);
- out(0x3C8, 154); out(0x3C9, 24); out(0x3C9, 20); out(0x3C9, 28);
- out(0x3C8, 155); out(0x3C9, 26); out(0x3C9, 20); out(0x3C9, 28);
- out(0x3C8, 156); out(0x3C9, 28); out(0x3C9, 20); out(0x3C9, 28);
- out(0x3C8, 157); out(0x3C9, 28); out(0x3C9, 20); out(0x3C9, 26);
- out(0x3C8, 158); out(0x3C9, 28); out(0x3C9, 20); out(0x3C9, 24);
- out(0x3C8, 159); out(0x3C9, 28); out(0x3C9, 20); out(0x3C9, 22);
- out(0x3C8, 160); out(0x3C9, 28); out(0x3C9, 20); out(0x3C9, 20);
- out(0x3C8, 161); out(0x3C9, 28); out(0x3C9, 22); out(0x3C9, 20);
- out(0x3C8, 162); out(0x3C9, 28); out(0x3C9, 24); out(0x3C9, 20);
- out(0x3C8, 163); out(0x3C9, 28); out(0x3C9, 26); out(0x3C9, 20);
- out(0x3C8, 164); out(0x3C9, 28); out(0x3C9, 28); out(0x3C9, 20);
- out(0x3C8, 165); out(0x3C9, 26); out(0x3C9, 28); out(0x3C9, 20);
- out(0x3C8, 166); out(0x3C9, 24); out(0x3C9, 28); out(0x3C9, 20);
- out(0x3C8, 167); out(0x3C9, 22); out(0x3C9, 28); out(0x3C9, 20);
- out(0x3C8, 168); out(0x3C9, 20); out(0x3C9, 28); out(0x3C9, 20);
- out(0x3C8, 169); out(0x3C9, 20); out(0x3C9, 28); out(0x3C9, 22);
- out(0x3C8, 170); out(0x3C9, 20); out(0x3C9, 28); out(0x3C9, 24);
- out(0x3C8, 171); out(0x3C9, 20); out(0x3C9, 28); out(0x3C9, 26);
- out(0x3C8, 172); out(0x3C9, 20); out(0x3C9, 28); out(0x3C9, 28);
- out(0x3C8, 173); out(0x3C9, 20); out(0x3C9, 26); out(0x3C9, 28);
- out(0x3C8, 174); out(0x3C9, 20); out(0x3C9, 24); out(0x3C9, 28);
- out(0x3C8, 175); out(0x3C9, 20); out(0x3C9, 22); out(0x3C9, 28);
- out(0x3C8, 176); out(0x3C9, 0); out(0x3C9, 0); out(0x3C9, 16);
- out(0x3C8, 177); out(0x3C9, 4); out(0x3C9, 0); out(0x3C9, 16);
- out(0x3C8, 178); out(0x3C9, 8); out(0x3C9, 0); out(0x3C9, 16);
- out(0x3C8, 179); out(0x3C9, 12); out(0x3C9, 0); out(0x3C9, 16);
- out(0x3C8, 180); out(0x3C9, 16); out(0x3C9, 0); out(0x3C9, 16);
- out(0x3C8, 181); out(0x3C9, 16); out(0x3C9, 0); out(0x3C9, 12);
- out(0x3C8, 182); out(0x3C9, 16); out(0x3C9, 0); out(0x3C9, 8);
- out(0x3C8, 183); out(0x3C9, 16); out(0x3C9, 0); out(0x3C9, 4);
- out(0x3C8, 184); out(0x3C9, 16); out(0x3C9, 0); out(0x3C9, 0);
- out(0x3C8, 185); out(0x3C9, 16); out(0x3C9, 4); out(0x3C9, 0);
- out(0x3C8, 186); out(0x3C9, 16); out(0x3C9, 8); out(0x3C9, 0);
- out(0x3C8, 187); out(0x3C9, 16); out(0x3C9, 12); out(0x3C9, 0);
- out(0x3C8, 188); out(0x3C9, 16); out(0x3C9, 16); out(0x3C9, 0);
- out(0x3C8, 189); out(0x3C9, 12); out(0x3C9, 16); out(0x3C9, 0);
- out(0x3C8, 190); out(0x3C9, 8); out(0x3C9, 16); out(0x3C9, 0);
- out(0x3C8, 191); out(0x3C9, 4); out(0x3C9, 16); out(0x3C9, 0);
- out(0x3C8, 192); out(0x3C9, 0); out(0x3C9, 16); out(0x3C9, 0);
- out(0x3C8, 193); out(0x3C9, 0); out(0x3C9, 16); out(0x3C9, 4);
- out(0x3C8, 194); out(0x3C9, 0); out(0x3C9, 16); out(0x3C9, 8);
- out(0x3C8, 195); out(0x3C9, 0); out(0x3C9, 16); out(0x3C9, 12);
- out(0x3C8, 196); out(0x3C9, 0); out(0x3C9, 16); out(0x3C9, 16);
- out(0x3C8, 197); out(0x3C9, 0); out(0x3C9, 12); out(0x3C9, 16);
- out(0x3C8, 198); out(0x3C9, 0); out(0x3C9, 8); out(0x3C9, 16);
- out(0x3C8, 199); out(0x3C9, 0); out(0x3C9, 4); out(0x3C9, 16);
- out(0x3C8, 200); out(0x3C9, 8); out(0x3C9, 8); out(0x3C9, 16);
- out(0x3C8, 201); out(0x3C9, 10); out(0x3C9, 8); out(0x3C9, 16);
- out(0x3C8, 202); out(0x3C9, 12); out(0x3C9, 8); out(0x3C9, 16);
- out(0x3C8, 203); out(0x3C9, 14); out(0x3C9, 8); out(0x3C9, 16);
- out(0x3C8, 204); out(0x3C9, 16); out(0x3C9, 8); out(0x3C9, 16);
- out(0x3C8, 205); out(0x3C9, 16); out(0x3C9, 8); out(0x3C9, 14);
- out(0x3C8, 206); out(0x3C9, 16); out(0x3C9, 8); out(0x3C9, 12);
- out(0x3C8, 207); out(0x3C9, 16); out(0x3C9, 8); out(0x3C9, 10);
- out(0x3C8, 208); out(0x3C9, 16); out(0x3C9, 8); out(0x3C9, 8);
- out(0x3C8, 209); out(0x3C9, 16); out(0x3C9, 10); out(0x3C9, 8);
- out(0x3C8, 210); out(0x3C9, 16); out(0x3C9, 12); out(0x3C9, 8);
- out(0x3C8, 211); out(0x3C9, 16); out(0x3C9, 14); out(0x3C9, 8);
- out(0x3C8, 212); out(0x3C9, 16); out(0x3C9, 16); out(0x3C9, 8);
- out(0x3C8, 213); out(0x3C9, 14); out(0x3C9, 16); out(0x3C9, 8);
- out(0x3C8, 214); out(0x3C9, 12); out(0x3C9, 16); out(0x3C9, 8);
- out(0x3C8, 215); out(0x3C9, 10); out(0x3C9, 16); out(0x3C9, 8);
- out(0x3C8, 216); out(0x3C9, 8); out(0x3C9, 16); out(0x3C9, 8);
- out(0x3C8, 217); out(0x3C9, 8); out(0x3C9, 16); out(0x3C9, 10);
- out(0x3C8, 218); out(0x3C9, 8); out(0x3C9, 16); out(0x3C9, 12);
- out(0x3C8, 219); out(0x3C9, 8); out(0x3C9, 16); out(0x3C9, 14);
- out(0x3C8, 220); out(0x3C9, 8); out(0x3C9, 16); out(0x3C9, 16);
- out(0x3C8, 221); out(0x3C9, 8); out(0x3C9, 14); out(0x3C9, 16);
- out(0x3C8, 222); out(0x3C9, 8); out(0x3C9, 12); out(0x3C9, 16);
- out(0x3C8, 223); out(0x3C9, 8); out(0x3C9, 10); out(0x3C9, 16);
- out(0x3C8, 224); out(0x3C9, 11); out(0x3C9, 11); out(0x3C9, 16);
- out(0x3C8, 225); out(0x3C9, 12); out(0x3C9, 11); out(0x3C9, 16);
- out(0x3C8, 226); out(0x3C9, 13); out(0x3C9, 11); out(0x3C9, 16);
- out(0x3C8, 227); out(0x3C9, 15); out(0x3C9, 11); out(0x3C9, 16);
- out(0x3C8, 228); out(0x3C9, 16); out(0x3C9, 11); out(0x3C9, 16);
- out(0x3C8, 229); out(0x3C9, 16); out(0x3C9, 11); out(0x3C9, 15);
- out(0x3C8, 230); out(0x3C9, 16); out(0x3C9, 11); out(0x3C9, 13);
- out(0x3C8, 231); out(0x3C9, 16); out(0x3C9, 11); out(0x3C9, 12);
- out(0x3C8, 232); out(0x3C9, 16); out(0x3C9, 11); out(0x3C9, 11);
- out(0x3C8, 233); out(0x3C9, 16); out(0x3C9, 12); out(0x3C9, 11);
- out(0x3C8, 234); out(0x3C9, 16); out(0x3C9, 13); out(0x3C9, 11);
- out(0x3C8, 235); out(0x3C9, 16); out(0x3C9, 15); out(0x3C9, 11);
- out(0x3C8, 236); out(0x3C9, 16); out(0x3C9, 16); out(0x3C9, 11);
- out(0x3C8, 237); out(0x3C9, 15); out(0x3C9, 16); out(0x3C9, 11);
- out(0x3C8, 238); out(0x3C9, 13); out(0x3C9, 16); out(0x3C9, 11);
- out(0x3C8, 239); out(0x3C9, 12); out(0x3C9, 16); out(0x3C9, 11);
- out(0x3C8, 240); out(0x3C9, 11); out(0x3C9, 16); out(0x3C9, 11);
- out(0x3C8, 241); out(0x3C9, 11); out(0x3C9, 16); out(0x3C9, 12);
- out(0x3C8, 242); out(0x3C9, 11); out(0x3C9, 16); out(0x3C9, 13);
- out(0x3C8, 243); out(0x3C9, 11); out(0x3C9, 16); out(0x3C9, 15);
- out(0x3C8, 244); out(0x3C9, 11); out(0x3C9, 16); out(0x3C9, 16);
- out(0x3C8, 245); out(0x3C9, 11); out(0x3C9, 15); out(0x3C9, 16);
- out(0x3C8, 246); out(0x3C9, 11); out(0x3C9, 13); out(0x3C9, 16);
- out(0x3C8, 247); out(0x3C9, 11); out(0x3C9, 12); out(0x3C9, 16);
- out(0x3C8, 248); out(0x3C9, 0); out(0x3C9, 0); out(0x3C9, 0);
- out(0x3C8, 249); out(0x3C9, 0); out(0x3C9, 0); out(0x3C9, 0);
- out(0x3C8, 250); out(0x3C9, 0); out(0x3C9, 0); out(0x3C9, 0);
- out(0x3C8, 251); out(0x3C9, 0); out(0x3C9, 0); out(0x3C9, 0);
- out(0x3C8, 252); out(0x3C9, 0); out(0x3C9, 0); out(0x3C9, 0);
- out(0x3C8, 253); out(0x3C9, 0); out(0x3C9, 0); out(0x3C9, 0);
- out(0x3C8, 254); out(0x3C9, 0); out(0x3C9, 0); out(0x3C9, 0);
- out(0x3C8, 255); out(0x3C9, 63); out(0x3C9, 63); out(0x3C9, 63);
- /* ^^^^^^^^^^ program default pallettes ^^^^^^^^^^ */
-
- /* enable palette */
- out(0x3C0, 0x20);
-
- /* graphics controller */
- r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00;
- r4 = 0x00; r5 = 0x00; r6 = 0x05; r7 = 0x0F;
- r8 = 0xFF;
- bout( 9, 0x3CE, 0x3CF);
- }
-
- PROCEDURE SetText
- {
- /* stop the sequencer and reprogram it */
- r0 = 0x01; r1 = 0x00; r2 = 0x03; r3 = 0x00; r4 = 0x03;
- bout( 5, 0x3C4, 0x3C5);
-
- /* set ATI extended registers */
-
- /* ATI Reg 0 = XX0XX000 */
- out(0x1CE, 0xB0); in(r63, 0x1CF); and(r63, 0xd8); or(r63, 0 ); shl(r63, 8); or(r63, 0xb0); outw(0x1ce, r63);
- /* ATI Reg 1 = XXXXXXXX */
- out(0x1CE, 0xB1); in(r63, 0x1CF); and(r63, 0x87); or(r63, 0 ); shl(r63, 8); or(r63, 0xb1); outw(0x1ce, r63);
- /* ATI Reg 2 = 00000001 */
- out(0x1CE, 0xb2); in(r63, 0x1CF); and(r63, 0x01); or(r63, 0x01); shl(r63, 8); or(r63, 0xb2); outw(0x1ce, r63);
- /* ATI Reg E = XXX10XXX */
- out(0x1CE, 0xBE); in(r63, 0x1CF); and(r63, 0xe7); or(r63, 0x10); shl(r63, 8); or(r63, 0xbe); outw(0x1ce, r63);
- /* ATI Reg 5 = XXXXXXXX */
- out(0x1CE, 0xB5); in(r63, 0x1CF); and(r63, 0x7f); or(r63, 0 ); shl(r63, 8); or(r63, 0xb5); outw(0x1ce, r63);
- /* ATI Reg 6 = XXXXX0XX */
- out(0x1CE, 0xB6); in(r63, 0x1CF); and(r63, 0xfb); or(r63, 0 ); shl(r63, 8); or(r63, 0xb6); outw(0x1ce, r63);
- /* ATI Reg 8 = 01XXXXXX */
- out(0x1CE, 0xB8); in(r63, 0x1CF); and(r63, 0x3f); or(r63, 0x40); shl(r63, 8); or(r63, 0xb8); outw(0x1ce, r63);
- /* ATI Reg 3 = X0X0XXXX */
- out(0x1CE, 0xB3); in(r63, 0x1CF); and(r63, 0xaf); or(r63, 0 ); shl(r63, 8); or(r63, 0xb3); outw(0x1ce, r63);
- /* ATI Reg 9 = XXXXXX11 */
- out(0x1CE, 0xB9); in(r63, 0x1CF); and(r63, 0xFD); or(r63, 0x03); shl(r63, 8); or(r63, 0xb9); outw(0x1ce, r63);
-
- out(0x3C2,0x67); /* misc out reg */
-
- r0=0x03; bout(1,0x3C4,0x3C5); /* sequencer enable */
-
- /* unprotect crtc regs 0-7 */
- out(0x3D4, 0x11); out(0x3D5, 0x0E);
-
- r0 = 0x5F; r1 = 0x4F; r2 = 0x50; r3 = 0x82; /* crtc */
- r4 = 0x55; r5 = 0x81; r6 = 0xBF; r7 = 0x1F;
- r8 = 0x00; r9 = 0x4F; r10 = 0x0D; r11 = 0x0E;
- r12 = 0x00; r13 = 0x00; r14 = 0x00; r15 = 0x00;
- r16 = 0x9C; r17 = 0x8E; r18 = 0x8F; r19 = 0x28;
- r20 = 0x0F; r21 = 0x96; r22 = 0xB9; r23 = 0xA3;
- r24 = 0xFF; bout(25,0x3D4,0x3D5);
-
- in(r63,0x3DA); /* reset attr F/F */
-
- r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03; /* palette */
- r4 = 0x04; r5 = 0x05; r6 = 0x14; r7 = 0x07;
- r8 = 0x38; r9 = 0x39; r10 = 0x3A; r11 = 0x3B;
- r12 = 0x3C; r13 = 0x3D; r14 = 0x3E; r15 = 0x3F;
- r16 = 0x0C; r17 = 0x00; r18 = 0x0F; r19 = 0x08; /* attr cntlr */
- bout(20,0x3C0,0x3C0);
-
- out(0x3C0,0x20); /* enable palette */
-
- out(0x3CC,0x00); out(0x3CA,0x01); /* graphics controller */
- r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00;
- r4 = 0x00; r5 = 0x10; r6 = 0x0E; r7 = 0x00;
- r8 = 0xFF; bout(9,0x3CE,0x3CF);
- }
-
- /*
- Derived from mode 800x600-256-60 and:
- Programmer's Reference Manual for the VGAWONDER by Locust
-
- Made to work with 128K footprint by SCO. Needs -5 revision of the chip.
- There is still a problem with the overscan being messed up due to
- a suspected hardware bug.
- */
-
-
- VENDOR ATI "ATI"
- MODEL WONDER+ "VGA WONDER PLUS"
- CLASS ATIVGA "ATI VGA"
- MODE 1024x768-16I "1024x768 16-color Interlaced"
-
- MEMORY(0xA0000,0x20000); /* Base Address, Length */
- PORT(0x1CE,0x1CF); /* ATI extended register */
- PORT(0x3C2,0x3CA,0x3CC,0x3DA); /* General/External registers */
- PORT(0x3C0,0x3C1); /* Attribute */
- PORT(0x3C7,0x3C8,0x3C9); /* Color registers */
- PORT(0x3C4,0x3C5); /* Sequencer */
- PORT(0x3CE,0x3CF); /* Graphics */
- PORT(0x3D4,0x3D5); /* CRTC */
-
- PROCEDURE InitGraphics
- {
- XDRIVER = "mw";
- VISUAL = "PseudoColor";
- DEPTH = 4;
- DEVTYPE = 01; /* devEGA */
- DEVTECH = 0x0D; /* VGA */
- PIXBYTES = 128;
- PIXWIDTH = 1024;
- PIXHEIGHT = 768;
- PIXRESX = 128;
- PIXRESY = 128;
- PIXBITS = 1;
- PIXPLANES = 4;
- BASEADDRESS = 0xA0000;
- MAPFLAGS = 0;
- COMMENT =
- "Make sure you have at least
- the 28800-5 version of the
- chip or later";
- }
-
- PROCEDURE SetGraphics /* ATI mode 0x55 */
- {
- in(r63,0x3DA); /* reset attr F/F */
- out(0x3C0,0); /* disable palette */
-
- /* stop the sequencer and reprogram it */
-
- r0 = 0x1; r1 = 0x1; r2 = 0x0f; r3 = 0x0; r4 = 0x36;
- bout(5, 0x3C4, 0x3C5);
-
- /* set ATI extended registers */
- /* ATI Reg 0 = XX0X000X */
- out(0x1ce, 0xb0); in(r63, 0x1cf); and(r63, 0xd1); or(r63, 0x00);
- shl(r63, 8); or(r63, 0xb0); outw(0x1ce, r63);
-
-
- /* ATI Reg 1 = X1000XXX */
- out(0x1ce, 0xb1); in(r63, 0x1cf); and(r63, 0x87); or(r63, 0x40);
- shl(r63, 8); or(r63, 0xb1); outw(0x1ce, r63);
-
- /* ATI Reg 2 = 00000000 (Select RO/WO page 0 */
- out(0x1ce, 0xb2); in(r63, 0x1cf); and(r63, 0x00); or(r63, 0x00);
- shl(r63, 8); or(r63, 0xb2); outw(0x1ce, r63);
-
- /* ATI Reg E = XXX10X1X (Single 128K bank) */
- out(0x1ce, 0xbe); in(r63, 0x1cf); and(r63, 0xe5); or(r63, 0x12);
- shl(r63, 8); or(r63, 0xbe); outw(0x1ce, r63);
-
- /* Note bit 0 of reg B5 disables overscan. This seems to fix a bug.
- */
-
- /* ATI Reg 5 = 1XXXXXX1 */
- out(0x1ce, 0xb5); in(r63, 0x1cf); and(r63, 0x7e); or(r63, 0x81);
- shl(r63, 8); or(r63, 0xb5); outw(0x1ce, r63);
-
- /* ATI Reg 6 = XXX110X1 */
- out(0x1ce, 0xb6); in(r63, 0x1cf); and(r63, 0xe2); or(r63, 0x19);
- shl(r63, 8); or(r63, 0xb6); outw(0x1ce, r63);
-
- /* ATI Reg 8 = 00XXXXXX */
- out(0x1ce, 0xb8); in(r63, 0x1cf); and(r63, 0x3f); or(r63, 0x00);
- shl(r63, 8); or(r63, 0xb8); outw(0x1ce, r63);
-
- /* ATI Reg 3 = X1X0XXXX */
- out(0x1ce, 0xb3); in(r63, 0x1cf); and(r63, 0xaf); or(r63, 0x40);
- shl(r63, 8); or(r63, 0xb3); outw(0x1ce, r63);
-
- /* ATI Reg 9 = XXXXXX1X */
- out(0x1ce, 0xb9); in(r63, 0x1cf); and(r63, 0xfd); or(r63, 0x02);
- shl(r63, 8); or(r63, 0xb9); outw(0x1ce, r63);
-
-
- /* ATI Reg D = XXXXX1XX */
- out(0x1ce, 0xbd); in(r63, 0x1cf); and(r63, 0xfb); or(r63, 0x04);
- shl(r63, 8); or(r63, 0xbd); outw(0x1ce, r63);
-
- /* misc output reg */
- out(0x3C2,0x2f);
-
- /* remove sequencer reset */
- r0 = 0x3;
- bout(1,0x3C4,0x3C5);
-
- /* unprotect crtc regs 0-7 */
- out(0x3D4, 0x11); out(0x3D5, 0x00);
-
- /* crtc */
- r0 = 0x4a; r1 = 0x3f; r2 = 0x40; r3 = 0x8c;
- r4 = 0x43; r5 = 0x0e; r6 = 0x32; r7 = 0xfd;
- r8 = 0x00; r9 = 0x60; r10 = 0x00; r11 = 0x00;
- r12 = 0x00; r13 = 0x00; r14 = 0x00; r15 = 0x00;
- r16 = 0x06; r17 = 0x8f; r18 = 0xff; r19 = 0x20;
- r20 = 0x0f; r21 = 0x05; r22 = 0x2d; r23 = 0xe3;
- r24 = 0xff;
- bout( 25, 0x3d4, 0x3D5 );
-
- /* graphics controller */
- out(0x3CC,0x00); out(0x3CA,0x01); /* graphics controller */
- r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00;
- r4 = 0x00; r5 = 0x00; r6 = 0x01; r7 = 0x0F;
- r8 = 0xFF;
- bout( 9, 0x3CE, 0x3CF);
-
-
- /* attribute controller */
- in(r63,0x3DA); /* reset f/f */
-
- /* palette */
- r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03; /* palette */
- r4 = 0x04; r5 = 0x05; r6 = 0x14; r7 = 0x07;
- r8 = 0x38; r9 = 0x39; r10 = 0x3A; r11 = 0x3B;
- r12 = 0x3C; r13 = 0x3D; r14 = 0x3E; r15 = 0x3F;
-
- /* attribute controller */
- r16 = 0x01; r17 = 0x00; r18 = 0x0F; r19 = 0x00; r20 = 0;
- bout( 21, 0x3C0, 0x3C0 );
-
- /* enable palette */
- out(0x3C0, 0x20);
-
- }
-
- PROCEDURE SetText
- {
- /* stop the sequencer and reprogram it */
- r0 = 0x01; r1 = 0x00; r2 = 0x03; r3 = 0x00; r4 = 0x03;
- bout( 5, 0x3C4, 0x3C5);
-
- /* set ATI extended registers */
-
- /* ATI Reg 0 = XX0XX00X */
- out(0x1CE, 0xB0); in(r63, 0x1CF); and(r63, 0xd9); or(r63, 0 );
- shl(r63, 8); or(r63, 0xb0); outw(0x1ce, r63);
- /* ATI Reg 1 = X0000XXX */
- out(0x1CE, 0xB1); in(r63, 0x1CF); and(r63, 0x87); or(r63, 0 );
- shl(r63, 8); or(r63, 0xb1); outw(0x1ce, r63);
- /* ATI Reg 2 = XXXXXXX1 */
- out(0x1CE, 0xb2); in(r63, 0x1CF); and(r63, 0x01); or(r63, 0x01);
- shl(r63, 8); or(r63, 0xb2); outw(0x1ce, r63);
- /* ATI Reg E = XXX10X0X */
- out(0x1CE, 0xBE); in(r63, 0x1CF); and(r63, 0xe5); or(r63, 0x10);
- shl(r63, 8); or(r63, 0xbe); outw(0x1ce, r63);
- /* ATI Reg 5 = 0XXXXXX0 */
- out(0x1CE, 0xB5); in(r63, 0x1CF); and(r63, 0x7e); or(r63, 0 );
- shl(r63, 8); or(r63, 0xb5); outw(0x1ce, r63);
- /* ATI Reg 6 = XXX000X0 */
- out(0x1CE, 0xB6); in(r63, 0x1CF); and(r63, 0xe2); or(r63, 0 );
- shl(r63, 8); or(r63, 0xb6); outw(0x1ce, r63);
- /* ATI Reg 8 = 01XXXXXX */
- out(0x1CE, 0xB8); in(r63, 0x1CF); and(r63, 0x3f); or(r63, 0x40);
- shl(r63, 8); or(r63, 0xb8); outw(0x1ce, r63);
- /* ATI Reg 3 = X0X0XXXX */
- out(0x1CE, 0xB3); in(r63, 0x1CF); and(r63, 0xaf); or(r63, 0 );
- shl(r63, 8); or(r63, 0xb3); outw(0x1ce, r63);
- /* ATI Reg 9 = XXXXXX1X */
- out(0x1CE, 0xB9); in(r63, 0x1CF); and(r63, 0xfd); or(r63, 0x02);
- shl(r63, 8); or(r63, 0xb9); outw(0x1ce, r63);
-
- /* ATI Reg D = XXXXX0XX */
- out(0x1ce, 0xbd); in(r63, 0x1cf); and(r63, 0xfb); or(r63, 0x0);
- shl(r63, 8); or(r63, 0xbd); outw(0x1ce, r63);
-
-
- out(0x3C2,0x67); /* misc out reg */
-
- r0=0x03; bout(1,0x3C4,0x3C5); /* sequencer enable */
-
- /* unprotect crtc regs 0-7 */
- out(0x3D4, 0x11); out(0x3D5, 0x0E);
-
- r0 = 0x5F; r1 = 0x4F; r2 = 0x50; r3 = 0x82; /* crtc */
- r4 = 0x55; r5 = 0x81; r6 = 0xBF; r7 = 0x1F;
- r8 = 0x00; r9 = 0x4F; r10 = 0x0D; r11 = 0x0E;
- r12 = 0x00; r13 = 0x00; r14 = 0x00; r15 = 0x00;
- r16 = 0x9C; r17 = 0x8E; r18 = 0x8F; r19 = 0x28;
- r20 = 0x0F; r21 = 0x96; r22 = 0xB9; r23 = 0xA3;
- r24 = 0xFF; bout(25,0x3D4,0x3D5);
-
- in(r63,0x3DA); /* reset attr F/F */
-
- r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03; /* palette */
- r4 = 0x04; r5 = 0x05; r6 = 0x14; r7 = 0x07;
- r8 = 0x38; r9 = 0x39; r10 = 0x3A; r11 = 0x3B;
- r12 = 0x3C; r13 = 0x3D; r14 = 0x3E; r15 = 0x3F;
- r16 = 0x0C; r17 = 0x00; r18 = 0x0F; r19 = 0x08; /* attr cntlr */
- bout(20,0x3C0,0x3C0);
-
- out(0x3C0,0x20); /* enable palette */
-
- out(0x3CC,0x00); out(0x3CA,0x01); /* graphics controller */
- r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00;
- r4 = 0x00; r5 = 0x10; r6 = 0x0E; r7 = 0x00;
- r8 = 0xFF; bout(9,0x3CE,0x3CF);
- }
-
-
- /*
- Derived from mode 800x600-256-60 and:
- Programmer's Reference Manual for the VGAWONDER
- */
- VENDOR ATI "ATI"
- MODEL WONDER+ "VGA WONDER PLUS"
- CLASS ATIVGA "ATI VGA"
- MODE 1024x768-16IB "1024x768 16-color Interlaced (Banked)"
-
- MEMORY(0xA0000,0x10000); /* Base Address, Length */
- PORT(0x1CE,0x1CF); /* ATI extended register */
- PORT(0x3C2,0x3CA,0x3CC,0x3DA); /* General/External registers */
- PORT(0x3C0,0x3C1); /* Attribute */
- PORT(0x3C7,0x3C8,0x3C9); /* Color registers */
- PORT(0x3C4,0x3C5); /* Sequencer */
- PORT(0x3CE,0x3CF); /* Graphics */
- PORT(0x3D4,0x3D5); /* CRTC */
-
- PROCEDURE InitGraphics
- {
- XDRIVER = "mw";
- VISUAL = "PseudoColor";
- DEPTH = 4;
- DEVTYPE = 01; /* devEGA */
- DEVTECH = 0x0D; /* VGA */
- PIXBYTES = 128;
- PIXWIDTH = 1024;
- PIXHEIGHT = 768;
- PIXRESX = 128;
- PIXRESY = 128;
- PIXBITS = 1;
- PIXPLANES = 4;
- MAPTYPE = "ATIWonder+1024x768x16";
- BASEADDRESS = 0xA0000;
- }
-
- PROCEDURE SetGraphics /* ATI mode 0x55 */
- {
- in(r63,0x3DA); /* reset attr F/F */
- out(0x3C0,0); /* disable palette */
-
- /* stop the sequencer and reprogram it */
-
- r0 = 0x1; r1 = 0x1; r2 = 0x0f; r3 = 0x0; r4 = 0x36;
- bout(5, 0x3C4, 0x3C5);
-
- /* set ATI extended registers */
-
- /* ATI Reg 0 = XX0X000X */
- out(0x1ce, 0xb0); in(r63, 0x1cf); and(r63, 0xd1); or(r63, 0x00);
- shl(r63, 8); or(r63, 0xb0); outw(0x1ce, r63);
- /* ATI Reg 1 = X1000XXX */
- out(0x1ce, 0xb1); in(r63, 0x1cf); and(r63, 0x87); or(r63, 0x40);
- shl(r63, 8); or(r63, 0xb1); outw(0x1ce, r63);
- /* ATI Reg 2 = XXXXXXXX (Select RO/WO page 0 */
- out(0x1ce, 0xb2); in(r63, 0x1cf); and(r63, 0x00); or(r63, 0x00);
- shl(r63, 8); or(r63, 0xb2); outw(0x1ce, r63);
- /* ATI Reg E = XXX11X1X (Enable Dual-Page) */
- out(0x1ce, 0xbe); in(r63, 0x1cf); and(r63, 0xe5); or(r63, 0x1a);
- shl(r63, 8); or(r63, 0xbe); outw(0x1ce, r63);
- /* ATI Reg 5 = 1XXXXXXX */
- out(0x1ce, 0xb5); in(r63, 0x1cf); and(r63, 0x7f); or(r63, 0x80);
- shl(r63, 8); or(r63, 0xb5); outw(0x1ce, r63);
- /* ATI Reg 6 = XXX110X1 */
- out(0x1ce, 0xb6); in(r63, 0x1cf); and(r63, 0xe2); or(r63, 0x19);
- shl(r63, 8); or(r63, 0xb6); outw(0x1ce, r63);
- /* ATI Reg 8 = 00XXXXXX */
- out(0x1ce, 0xb8); in(r63, 0x1cf); and(r63, 0x3f); or(r63, 0x00);
- shl(r63, 8); or(r63, 0xb8); outw(0x1ce, r63);
- /* ATI Reg 3 = X1X0XXXX */
- out(0x1ce, 0xb3); in(r63, 0x1cf); and(r63, 0xaf); or(r63, 0x40);
- shl(r63, 8); or(r63, 0xb3); outw(0x1ce, r63);
- /* ATI Reg 9 = XXXXXX1X */
- out(0x1ce, 0xb9); in(r63, 0x1cf); and(r63, 0xfd); or(r63, 0x02);
- shl(r63, 8); or(r63, 0xb9); outw(0x1ce, r63);
-
- /* misc output reg */
- out(0x3C2,0x2f);
-
- /* remove sequencer reset */
- r0 = 0x3;
- bout(1,0x3C4,0x3C5);
-
- /* unprotect crtc regs 0-7 */
- out(0x3D4, 0x11); out(0x3D5, 0x00);
-
- /* crtc */
- r0 = 0x4a; r1 = 0x3f; r2 = 0x40; r3 = 0x8c;
- r4 = 0x43; r5 = 0x0e; r6 = 0x32; r7 = 0xfd;
- r8 = 0x00; r9 = 0x60; r10 = 0x00; r11 = 0x00;
- r12 = 0x00; r13 = 0x00; r14 = 0x00; r15 = 0x00;
- r16 = 0x06; r17 = 0x8f; r18 = 0xff; r19 = 0x20;
- r20 = 0x0f; r21 = 0x05; r22 = 0x2d; r23 = 0xe3;
- r24 = 0xff;
- bout( 25, 0x3d4, 0x3D5 );
-
- /* graphics controller */
- out (0x3CC, 0x00); out (0x3CA, 0x01); /* graphics controller */
- r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00;
- r4 = 0x00; r5 = 0x00; r6 = 0x05; r7 = 0x0F;
- r8 = 0xFF;
- bout( 9, 0x3CE, 0x3CF);
-
- /* attribute controller */
- in(r63,0x3DA); /* reset f/f */
-
- /* palette */
- r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03;
- r4 = 0x04; r5 = 0x05; r6 = 0x06; r7 = 0x07;
- r8 = 0x08; r9 = 0x09; r10 = 0x0a; r11 = 0x0b;
- r12 = 0x0c; r13 = 0x0d; r14 = 0x0e; r15 = 0x0f;
- /* attribute controller */
- r16 = 0x01; r17 = 0x00; r18 = 0x0F; r19 = 0x00; r20 = 0;
- bout( 21, 0x3C0, 0x3C0 );
-
- /* enable palette */
- out(0x3C0, 0x20);
- }
-
- PROCEDURE SetText
- {
- /* stop the sequencer and reprogram it */
- r0 = 0x01; r1 = 0x00; r2 = 0x03; r3 = 0x00; r4 = 0x03;
- bout( 5, 0x3C4, 0x3C5);
-
- /* set ATI extended registers */
-
- /* ATI Reg 0 = XX0XX00X */
- out(0x1CE, 0xB0); in(r63, 0x1CF); and(r63, 0xd9); or(r63, 0 );
- shl(r63, 8); or(r63, 0xb0); outw(0x1ce, r63);
- /* ATI Reg 1 = X0000XXX */
- out(0x1CE, 0xB1); in(r63, 0x1CF); and(r63, 0x87); or(r63, 0 );
- shl(r63, 8); or(r63, 0xb1); outw(0x1ce, r63);
- /* ATI Reg 2 = XXXXXXX1 */
- out(0x1CE, 0xb2); in(r63, 0x1CF); and(r63, 0x01); or(r63, 0x01);
- shl(r63, 8); or(r63, 0xb2); outw(0x1ce, r63);
- /* ATI Reg E = XXX10X0X */
- out(0x1CE, 0xBE); in(r63, 0x1CF); and(r63, 0xe5); or(r63, 0x10);
- shl(r63, 8); or(r63, 0xbe); outw(0x1ce, r63);
- /* ATI Reg 5 = 0XXXXXXX */
- out(0x1CE, 0xB5); in(r63, 0x1CF); and(r63, 0x7f); or(r63, 0 );
- shl(r63, 8); or(r63, 0xb5); outw(0x1ce, r63);
- /* ATI Reg 6 = XXX000X0 */
- out(0x1CE, 0xB6); in(r63, 0x1CF); and(r63, 0xe2); or(r63, 0 );
- shl(r63, 8); or(r63, 0xb6); outw(0x1ce, r63);
- /* ATI Reg 8 = 01XXXXXX */
- out(0x1CE, 0xB8); in(r63, 0x1CF); and(r63, 0x3f); or(r63, 0x40);
- shl(r63, 8); or(r63, 0xb8); outw(0x1ce, r63);
- /* ATI Reg 3 = X0X0XXXX */
- out(0x1CE, 0xB3); in(r63, 0x1CF); and(r63, 0xaf); or(r63, 0 );
- shl(r63, 8); or(r63, 0xb3); outw(0x1ce, r63);
- /* ATI Reg 9 = XXXXXX1X */
- out(0x1CE, 0xB9); in(r63, 0x1CF); and(r63, 0xfd); or(r63, 0x02);
- shl(r63, 8); or(r63, 0xb9); outw(0x1ce, r63);
-
- out(0x3C2,0x67); /* misc out reg */
-
- r0=0x03; bout(1,0x3C4,0x3C5); /* sequencer enable */
-
- /* unprotect crtc regs 0-7 */
- out(0x3D4, 0x11); out(0x3D5, 0x0E);
-
- r0 = 0x5F; r1 = 0x4F; r2 = 0x50; r3 = 0x82; /* crtc */
- r4 = 0x55; r5 = 0x81; r6 = 0xBF; r7 = 0x1F;
- r8 = 0x00; r9 = 0x4F; r10 = 0x0D; r11 = 0x0E;
- r12 = 0x00; r13 = 0x00; r14 = 0x00; r15 = 0x00;
- r16 = 0x9C; r17 = 0x8E; r18 = 0x8F; r19 = 0x28;
- r20 = 0x0F; r21 = 0x96; r22 = 0xB9; r23 = 0xA3;
- r24 = 0xFF; bout(25,0x3D4,0x3D5);
-
- in(r63,0x3DA); /* reset attr F/F */
-
- r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03; /* palette */
- r4 = 0x04; r5 = 0x05; r6 = 0x14; r7 = 0x07;
- r8 = 0x38; r9 = 0x39; r10 = 0x3A; r11 = 0x3B;
- r12 = 0x3C; r13 = 0x3D; r14 = 0x3E; r15 = 0x3F;
- r16 = 0x0C; r17 = 0x00; r18 = 0x0F; r19 = 0x08; /* attr cntlr */
- bout(20,0x3C0,0x3C0);
-
- out(0x3C0,0x20); /* enable palette */
-
- out(0x3CC,0x00); out(0x3CA,0x01); /* graphics controller */
- r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00;
- r4 = 0x00; r5 = 0x10; r6 = 0x0E; r7 = 0x00;
- r8 = 0xFF; bout(9,0x3CE,0x3CF);
- }
-
- VENDOR ATI "ATI"
- MODEL WONDER+ "VGA WONDER PLUS"
- CLASS ATIVGA "ATI VGA"
- MODE 1024x768-16 "1024x768 16-color"
-
- MEMORY(0xA0000,0x20000); /* Base Address, Length */
- PORT(0x1CE,0x1CF); /* ATI extended register */
- PORT(0x3C2,0x3CA,0x3CC,0x3DA); /* General/External registers */
- PORT(0x3C0,0x3C1); /* Attribute */
- PORT(0x3C7,0x3C8,0x3C9); /* Color registers */
- PORT(0x3C4,0x3C5); /* Sequencer */
- PORT(0x3CE,0x3CF); /* Graphics */
- PORT(0x3D4,0x3D5); /* CRTC */
-
- PROCEDURE InitGraphics
- {
- XDRIVER = "mw";
- VISUAL = "PseudoColor";
- DEPTH = 4;
- DEVTYPE = 01; /* devEGA */
- DEVTECH = 0x0D; /* VGA */
- PIXBYTES = 128;
- PIXWIDTH = 1024;
- PIXHEIGHT = 768;
- PIXRESX = 128;
- PIXRESY = 128;
- PIXBITS = 1;
- PIXPLANES = 4;
- BASEADDRESS = 0xA0000;
- MAPFLAGS = 0;
- }
-
-
- PROCEDURE SetGraphics /* ATI mode 0x55 */
- {
- in(r63,0x3DA); /* reset attr F/F */
- out(0x3C0,0); /* disable palette */
-
- /* stop the sequencer and reprogram it */
-
- r0 = 0x1; r1 = 0x1; r2 = 0x0f; r3 = 0x0; r4 = 0x46;
- bout(5, 0x3C4, 0x3C5);
-
- /* set ATI extended registers */
- /* ATI Reg 0 = XX0X000X */
- out(0x1ce, 0xb0); in(r63, 0x1cf); and(r63, 0xd1); or(r63, 0x00);
- shl(r63, 8); or(r63, 0xb0); outw(0x1ce, r63);
-
-
- /* ATI Reg 1 = X0000XXX */
- out(0x1ce, 0xb1); in(r63, 0x1cf); and(r63, 0x87); or(r63, 0x00);
- shl(r63, 8); or(r63, 0xb1); outw(0x1ce, r63);
-
- /* ATI Reg 2 = 00000000 (Select RO/WO page 0 */
- out(0x1ce, 0xb2); in(r63, 0x1cf); and(r63, 0x00); or(r63, 0x00);
- shl(r63, 8); or(r63, 0xb2); outw(0x1ce, r63);
-
- /* ATI Reg E = XXX00X0X (Single 128K bank) */
- out(0x1ce, 0xbe); in(r63, 0x1cf); and(r63, 0xe5); or(r63, 0x00);
- shl(r63, 8); or(r63, 0xbe); outw(0x1ce, r63);
-
- /* Note bit 0 of reg B5 disables overscan. This seems to fix a bug.
- */
-
- /* ATI Reg 5 = 1XXXXXX1 */
- out(0x1ce, 0xb5); in(r63, 0x1cf); and(r63, 0x7e); or(r63, 0x81);
- shl(r63, 8); or(r63, 0xb5); outw(0x1ce, r63);
-
- /* ATI Reg 6 = XXX110X1 */
- out(0x1ce, 0xb6); in(r63, 0x1cf); and(r63, 0xe2); or(r63, 0x19);
- shl(r63, 8); or(r63, 0xb6); outw(0x1ce, r63);
-
- /* ATI Reg 8 = 00XXXXXX */
- out(0x1ce, 0xb8); in(r63, 0x1cf); and(r63, 0x3f); or(r63, 0x00);
- shl(r63, 8); or(r63, 0xb8); outw(0x1ce, r63);
-
- /* ATI Reg 3 = X1X0XXXX */
- out(0x1ce, 0xb3); in(r63, 0x1cf); and(r63, 0xaf); or(r63, 0x40);
- shl(r63, 8); or(r63, 0xb3); outw(0x1ce, r63);
-
- /* ATI Reg 9 = XXXXXX1X */
- out(0x1ce, 0xb9); in(r63, 0x1cf); and(r63, 0xfd); or(r63, 0x02);
- shl(r63, 8); or(r63, 0xb9); outw(0x1ce, r63);
-
-
- /* ATI Reg D = XXXXX1XX */
- out(0x1ce, 0xbd); in(r63, 0x1cf); and(r63, 0xfb); or(r63, 0x04);
- shl(r63, 8); or(r63, 0xbd); outw(0x1ce, r63);
-
- /* misc output reg */
- out(0x3C2,0x2f);
-
- /* remove sequencer reset */
- r0 = 0x3;
- bout(1,0x3C4,0x3C5);
-
- /* unprotect crtc regs 0-7 */
- out(0x3D4, 0x11); out(0x3D5, 0x00);
-
- /* crtc */
- /* old
- r0 = 0x4a; r1 = 0x3f; r2 = 0x40; r3 = 0x8c;
- r4 = 0x43; r5 = 0x0e; r6 = 0x32; r7 = 0xfd;
- r8 = 0x00; r9 = 0x60; r10 = 0x00; r11 = 0x00;
- r12 = 0x00; r13 = 0x00; r14 = 0x00; r15 = 0x00;
- r16 = 0x06; r17 = 0x8f; r18 = 0xff; r19 = 0x20;
- r20 = 0x0f; r21 = 0x05; r22 = 0x2d; r23 = 0xe3;
- r24 = 0xff;
- bout( 25, 0x3d4, 0x3D5 );
- */
-
-
- /* crtc */
- r0 = 0x4f; r1 = 0x3f; r2 = 0x40; r3 = 0x90;
- r4 = 0x45; r5 = 0x09; r6 = 0x28; r7 = 0xfd;
- r8 = 0x00; r9 = 0x60; r10 = 0x00; r11 = 0x00;
- r12 = 0x00; r13 = 0x00; r14 = 0x00; r15 = 0x00;
- r16 = 0x06; r17 = 0x8f; r18 = 0xff; r19 = 0x20;
- r20 = 0x0f; r21 = 0x05; r22 = 0x1a; r23 = 0xe3;
- r24 = 0xff;
- bout( 25, 0x3d4, 0x3D5 );
-
-
- /* graphics controller */
- out(0x3CC,0x00); out(0x3CA,0x01); /* graphics controller */
- r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00;
- r4 = 0x00; r5 = 0x00; r6 = 0x01; r7 = 0x0F;
- r8 = 0xFF;
- bout( 9, 0x3CE, 0x3CF);
-
-
- /* attribute controller */
- in(r63,0x3DA); /* reset f/f */
-
- /* palette */
- r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03; /* palette */
- r4 = 0x04; r5 = 0x05; r6 = 0x14; r7 = 0x07;
- r8 = 0x38; r9 = 0x39; r10 = 0x3A; r11 = 0x3B;
- r12 = 0x3C; r13 = 0x3D; r14 = 0x3E; r15 = 0x3F;
-
- /* attribute controller */
- r16 = 0x01; r17 = 0x00; r18 = 0x0F; r19 = 0x00; r20 = 0;
- bout( 21, 0x3C0, 0x3C0 );
-
- /* enable palette */
- out(0x3C0, 0x20);
-
- }
-
- PROCEDURE SetText
- {
- /* stop the sequencer and reprogram it */
- r0 = 0x01; r1 = 0x00; r2 = 0x03; r3 = 0x00; r4 = 0x03;
- bout( 5, 0x3C4, 0x3C5);
-
- /* set ATI extended registers */
-
- /* ATI Reg 0 = XX0XX00X */
- out(0x1CE, 0xB0); in(r63, 0x1CF); and(r63, 0xd9); or(r63, 0 );
- shl(r63, 8); or(r63, 0xb0); outw(0x1ce, r63);
- /* ATI Reg 1 = X0000XXX */
- out(0x1CE, 0xB1); in(r63, 0x1CF); and(r63, 0x87); or(r63, 0 );
- shl(r63, 8); or(r63, 0xb1); outw(0x1ce, r63);
- /* ATI Reg 2 = XXXXXXX1 */
- out(0x1CE, 0xb2); in(r63, 0x1CF); and(r63, 0x01); or(r63, 0x01);
- shl(r63, 8); or(r63, 0xb2); outw(0x1ce, r63);
- /* ATI Reg E = XXX10X0X */
- out(0x1CE, 0xBE); in(r63, 0x1CF); and(r63, 0xe5); or(r63, 0x10);
- shl(r63, 8); or(r63, 0xbe); outw(0x1ce, r63);
- /* ATI Reg 5 = 0XXXXXX0 */
- out(0x1CE, 0xB5); in(r63, 0x1CF); and(r63, 0x7e); or(r63, 0 );
- shl(r63, 8); or(r63, 0xb5); outw(0x1ce, r63);
- /* ATI Reg 6 = XXX000X0 */
- out(0x1CE, 0xB6); in(r63, 0x1CF); and(r63, 0xe2); or(r63, 0 );
- shl(r63, 8); or(r63, 0xb6); outw(0x1ce, r63);
- /* ATI Reg 8 = 01XXXXXX */
- out(0x1CE, 0xB8); in(r63, 0x1CF); and(r63, 0x3f); or(r63, 0x40);
- shl(r63, 8); or(r63, 0xb8); outw(0x1ce, r63);
- /* ATI Reg 3 = X0X0XXXX */
- out(0x1CE, 0xB3); in(r63, 0x1CF); and(r63, 0xaf); or(r63, 0 );
- shl(r63, 8); or(r63, 0xb3); outw(0x1ce, r63);
- /* ATI Reg 9 = XXXXXX1X */
- out(0x1CE, 0xB9); in(r63, 0x1CF); and(r63, 0xfd); or(r63, 0x02);
- shl(r63, 8); or(r63, 0xb9); outw(0x1ce, r63);
-
- /* ATI Reg D = XXXXX0XX */
- out(0x1ce, 0xbd); in(r63, 0x1cf); and(r63, 0xfb); or(r63, 0x0);
- shl(r63, 8); or(r63, 0xbd); outw(0x1ce, r63);
-
-
- out(0x3C2,0x67); /* misc out reg */
-
- r0=0x03; bout(1,0x3C4,0x3C5); /* sequencer enable */
-
- /* unprotect crtc regs 0-7 */
- out(0x3D4, 0x11); out(0x3D5, 0x0E);
-
- r0 = 0x5F; r1 = 0x4F; r2 = 0x50; r3 = 0x82; /* crtc */
- r4 = 0x55; r5 = 0x81; r6 = 0xBF; r7 = 0x1F;
- r8 = 0x00; r9 = 0x4F; r10 = 0x0D; r11 = 0x0E;
- r12 = 0x00; r13 = 0x00; r14 = 0x00; r15 = 0x00;
- r16 = 0x9C; r17 = 0x8E; r18 = 0x8F; r19 = 0x28;
- r20 = 0x0F; r21 = 0x96; r22 = 0xB9; r23 = 0xA3;
- r24 = 0xFF; bout(25,0x3D4,0x3D5);
-
- in(r63,0x3DA); /* reset attr F/F */
-
- r0 = 0x00; r1 = 0x01; r2 = 0x02; r3 = 0x03; /* palette */
- r4 = 0x04; r5 = 0x05; r6 = 0x14; r7 = 0x07;
- r8 = 0x38; r9 = 0x39; r10 = 0x3A; r11 = 0x3B;
- r12 = 0x3C; r13 = 0x3D; r14 = 0x3E; r15 = 0x3F;
- r16 = 0x0C; r17 = 0x00; r18 = 0x0F; r19 = 0x08; /* attr cntlr */
- bout(20,0x3C0,0x3C0);
-
- out(0x3C0,0x20); /* enable palette */
-
- out(0x3CC,0x00); out(0x3CA,0x01); /* graphics controller */
- r0 = 0x00; r1 = 0x00; r2 = 0x00; r3 = 0x00;
- r4 = 0x00; r5 = 0x10; r6 = 0x0E; r7 = 0x00;
- r8 = 0xFF; bout(9,0x3CE,0x3CF);
- }
-
-
- /* End of File - ATI-WONDER+.XGI */
-
-